beforeやafter(returningを取ると例外が出ても実行してくれるみたい)のほかにもaroundっていうものがある。
これが一番あれこれ出来て面白そうに感じる今日この頃。
aroundの書き方はこんな感じ
戻り値 around(引数) : ぽいんとかっと {
挟み込みたい処理
proceed(引数); // 本来の処理実行
挟み込みたい処理
}
proceedを呼ばなければ、もとの処理は行われない。
もう好きにして!!って感じだ。
aroundを使ってHelloWorldを書くとこんな感じになる
package org.okazuki.aspectj.hello; public aspect HelloWorldAspect { pointcut sayHello() : execution(public void HelloWorld.sayHello()); // before() : sayHello() { // System.out.println("before Hello world"); // } // // after() returning() : sayHello() { // System.out.println("after Hello world"); // } void around() : sayHello() { System.out.println("around Hello world"); proceed(); System.out.println("around Hello world"); } }
出力してるメッセージは違うけど気にしない!!
実行結果はこうなる。
around Hello world Hello world around Hello world