春はそれは本当に簡単です...評価されています。ここでは簡単なログの例です:
@Aspect
public class MyLogger {
private Logger log = Logger.getLogger(getClass());
@After("execution(* com.example.web.HomeController.*(..))")
public void log(JoinPoint point) {
log.info(point.getSignature().getName() + " called...");
}
}
その後、単にあなたのapplicationContext.xmlを設定(または同等の):
<aop:aspectj-autoproxy>
<aop:include name="myLogger"/>
</aop:aspectj-autoproxy>
<bean id="myLogger" class="com.example.aspect.MyLogger"/>
あなたは私が右の方法の上@After
を指定MyLoggerクラスに気づくでしょう。これはアドバイスと呼ばれ、基本的には、この「ログ」メソッドはの後にと呼ばれます。その他のオプションは@Before, @Around, @AfterThrowing
です。
式"execution(* com.example.web.HomeController.*(..))"
はポイントカット式と呼ばれ、ターゲットとするもの(この場合はHomeControllerクラスのすべてのメソッド)を指定します。
P.S. aop
名前空間(xmlns:aop="http://www.springframework.org/schema/aop"
)とスキーマの場所(バージョンに依存)は、最上部のapplicationContext.xmlに追加する必要があります。あなたはAspectJのを統合するには、いくつかの手順を実行する必要があり
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">
サイドノート:英語では、「なし」は1語です。私はあなたが良い答えを得ることを願っています。 –
アスペクトチュートリアル:http://marcin-chwedczuk.github.io/overview-of-spring-annotation-driven-aop – csharpfolk