すべてのメソッド呼び出しをインターセプトするアスペクトを持つ JAR が必要です。
@Aspect
public class CoolAspect {
@Pointcut("execution(public * *(..))")
public void anyPublicMethod() { }
@Before("anyPublicMethod()")
public void advice(JoinPoint point) {
System.out.println("sign:\t" + point.getSignature());
}
}
上記が私が持っていて、クライアントに使用してもらいたいアスペクトであるとします。これを JAR にコンパイルし、Maven で使用できるようにします。
これで、クライアントはこの jar を依存関係として使用します。
<dependency>
<groupId>cool-group</groupId>
<artifactId>cool-artifact</artifactId>
<version>1.0.0</version>
</dependency>
この成果物 (JAR) には、前述の側面があります。
Maven依存関係を宣言するだけで、アスペクトの作業が可能になりましたか?
重要かもしれないいくつかのこと:
- AspectJ (必要に応じておそらく Spring AOP) を使用する予定です。
- クライアントは、おそらく通常の Web アプリケーション
web.xml
などになります。 - クライアントはMavenで構築されています
- クライアントをできるだけ簡単に構成できるようにしたいと考えています。当初の考えでは、Maven の依存関係で十分でした。
- 「アノテーション JAR」には Web フラグメントが含まれるため、
ServletContextListener
そこでカスタムを宣言することができます。
何か案は?