S2AOPとは
AOPはAspect oriented Programming(アスペクト指向プログラミング)である。
なにができるを簡単を説明すると
Seasar2ではS2AOPという、S2Containerで管理するコンポーネントに対してAOP適用する機能がある。
※ finalクラスには適用できない
※ finalメソッド、staticメソッド、非publicメソッドにはAOP適用できない
aop.diconにデフォルト登録されているTraceInterceoporを適用してみる。
app.dicon |
TraceAopTest.java |
package aop;
public class TraceAopTest {
public String getMessage1() {
return "メッセージ1";
}
public String getMessage2() {
return "メッセージ2";
}
public String getMessage3() {
return "メッセージ3";
}
}
|
TestAopMain.java |
package aop;
import org.seasar.framework.container.SingletonS2Container;
import org.seasar.framework.container.factory.SingletonS2ContainerFactory;
public class TestAopMain {
public static void main(String[] args) {
// S2Container初期化
SingletonS2ContainerFactory.init();
// コンポーネント取得
TraceAopTest t = SingletonS2Container.getComponent(TraceAopTest.class);
t.getMessage1();
t.getMessage2();
t.getMessage3();
// S2Container破棄
SingletonS2ContainerFactory.destroy();
}
}
|
出力メッセージ |
2015-08-07 17:56:46,537 [main] DEBUG org.seasar.framework.aop.interceptors.TraceInterceptor - BEGIN aop.TraceAopTest#getMessage1()
2015-08-07 17:56:46,537 [main] DEBUG org.seasar.framework.aop.interceptors.TraceInterceptor - END aop.TraceAopTest#getMessage1() : メッセージ1
|
※ メソッドの前後にトレースログが自動的に追加されている!!