Java SpringAOP-每个带有注释的方法的切入点
我正在尝试定义一个切入点,它将捕获每一个用(Java SpringAOP-每个带有注释的方法的切入点,java,spring,aop,spring-aop,pointcut,Java,Spring,Aop,Spring Aop,Pointcut,我正在尝试定义一个切入点,它将捕获每一个用(@CatchThis注释的方法。这是我自己的注解 此外,我希望能够访问该方法的第一个参数,它将是Long类型。也许还有其他的争论,但我不在乎 编辑 这就是我现在拥有的。我不知道的是如何传递用@CatchThis注释的方法的第一个参数 @Aspect public class MyAspect { @Pointcut(value = "execution(public * *(..))") public void anyPublicM
@CatchThis
注释的方法。这是我自己的注解
此外,我希望能够访问该方法的第一个参数,它将是Long
类型。也许还有其他的争论,但我不在乎
编辑 这就是我现在拥有的。我不知道的是如何传递用
@CatchThis
注释的方法的第一个参数
@Aspect
public class MyAspect {
@Pointcut(value = "execution(public * *(..))")
public void anyPublicMethod() {
}
@Around("anyPublicMethod() && @annotation(catchThis)")
public Object logAction(ProceedingJoinPoint pjp, CatchThis catchThis) throws Throwable {
return pjp.proceed();
}
}
这样做应该可以:
@Aspect
public class MyAspect{
@Pointcut(value="execution(public * *(..))")
public void anyPublicMethod() {
}
@Around("anyPublicMethod() && @annotation(catchThis) && args(.., Long ,..)")
public Object logAction(
ProceedingJoinPoint pjp, CatchThis catchThis, Long long)
throws Throwable {
return pjp.proceed();
}
}
我已经更新了我的帖子。你能对你的代码片段做同样的处理吗?我会非常感激的。谢谢。是否有可能捕获具有一个长参数的方法,该参数不一定是第一个参数-它可以是第一个、第二个。。还是最后一个?
原因:org.springframework.beans.factory.BeanCreationException:创建在类路径资源[beans.xml]中定义了名称为“piano”的bean时出错:bean初始化失败;嵌套异常是java.lang.IllegalArgumentException:error at::0 formal unbound in pointcut
这是我尝试使用您的方面时得到的结果。。我迷路了我从args(…)中删除了第一个…-当时的错误不同。我尝试了答案,我整个下午都在寻找答案,结果很简单。我很惊讶aspecj和spring的强大,我的Intellij想法也知道切入点通过静态代码分析是有效的。不幸的是,我可以在spring官方文档中找到这个特定问题的答案。这个切入点表达式是否也涵盖了不是spring管理的对象?也就是说,如果我在一个简单的POJO上使用@CatchThis注释,切入点表达式会对其求值吗?