かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

アラウンド!

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