ひがやすを技術ブログ

電通国際情報サービスのプログラマ

ちょっとした疑問

でも実は次のところでちょっと苦戦orびっくりした。
で指定するmethodにpointcut指定が可能なこと。
アスペクトを使ってインターフェースや抽象クラスをインスタンス化できること。これってどういう使い道がある?

コンポーネントのpublicなメソッドはpointcutに指定できます。
privateなメソッドを指定すると無視されます。
pointcutを指定しなかった場合には、コンポーネントが実装している
インターフェースのメソッドがすべて適用されます。
コンポーネントのすべてのメソッドが適用されるわけではありません。
アスペクトを使ってインターフェースや抽象クラスをインスタンス化する機能は、
例えばGroovyで実装はするけど使う側には普通のJavaのクラスに
見せたいときに使います。
アスペクトJavaのメソッド呼び出しをGroovyの呼び出しに変換すれば
良いのです。