我正在编写一个库/ sdk,它可以拦截任何使用自定义注释@Monitor
注释的方法。
代码有点像这样
@Monitor
public void methodA(String test)
拦截这一点的方面有这个切入点表达式
@After("execution(@com.packageA.Monitor * *(..))")
public void intercept(final JoinPoint joinPoint){
...}
当我在与methodA
相同的包中描述方面时,此代码可以正常工作。但是,如果我创建一个单独的库并定义方面,因为它无法拦截methodA
。有什么帮助吗?
回应@Bond的评论
@Component
@Target(value = {ElementType.METHOD, ElementType.TYPE})
@Retention(value = RetentionPolicy.RUNTIME)
public @interface Monitor {
}
春季版: spring-context - 4.1.7。发布 aspectj - 1.6.5 问题的关键在于注释不会在同一个项目中使用。编译后,它将在一个不同的项目中一起使用。
使用aspectj maven插件编译第二个项目,即应该拦截此方面的项目