Я хочу иметь 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.
Теперь клиенты будут использовать эту банку как зависимость, например.
<dependency>
<groupId>cool-group</groupId>
<artifactId>cool-artifact</artifactId>
<version>1.0.0</version>
</dependency>
Этот артефакт (JAR) имеет указанный аспект.
Теперь возможно ли, чтобы аспект работал просто объявив зависимость Maven?
Несколько вещей, которые могут быть важны:
- Я планирую использовать AspectJ (возможно, Spring AOP, если необходимо),
- Клиенты, вероятно, будут веб-приложениями с обычными
web.xml
и т. д. - Клиенты создаются с помощью Maven
- Я хочу, чтобы клиенты были максимально просты в настройке - в моей первоначальной идее было бы достаточно зависимости от Maven.
- «Аннотационный JAR» будет содержать веб-фрагмент, поэтому там можно объявить некоторые пользовательские
ServletContextListener
.
Любые идеи?