かずきのBlog@hatena

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

ポイントカット

さて、さっきのHello worldを書いてて思ったけどめんどくせ〜!
何がって、public void org.okazuki.aspectj.hello.HelloWorld.sayHello()っていっぱい書くのが。
何かパッケージ名は、同じパッケージにいるかimportしてる場合は省略可能らしい。
早く教えてよ!!


まぁ、それでも二箇所に同じことを書くのはめんどくさいわけで。
そんなときのために、何処に割り込みをかけるのかを事前に定義しておける。
それがpointcutっていうのかな。

定義の仕方はこんな感じ

pointcut 名前() : 何処か;


さっきのHelloWorldだと

pointcut sayHello() : execution(public void HelloWorld.sayHello());

になる。

定義したpointcutは、afterやbeforeの後に書ける!
つまり、さっきのHelloWorldAspectはこうなる。

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");
	}
}

多少楽になったね。