Java AOP在接口方法实现中不起作用
我有一个默认方法调用同一接口的另一个方法Java AOP在接口方法实现中不起作用,java,spring,spring-boot,aop,spring-aop,Java,Spring,Spring Boot,Aop,Spring Aop,我有一个默认方法调用同一接口的另一个方法 public interface Test { default Boolean isValidObject(String A) { ComplexObject B= new ComplexObject(); SomeObject SomeObject= validate(A, B); return SomeObject.isValid(); } SomeObject validate(St
public interface Test {
default Boolean isValidObject(String A) {
ComplexObject B= new ComplexObject();
SomeObject SomeObject= validate(A, B);
return SomeObject.isValid();
}
SomeObject validate(String A, ComplexObject b);
}
如果我提到的是isValidObject
,那么它工作正常。但是,如果切入点指的是validate
,则该切入点现在起作用
不起作用的切入点
@After("execution(fullqualifiedSomeObject com.a.b.c.Test+.validate(..))")
此外,左边还有一个标记,上面有消息。“此行的3个弹簧AOP标记”
请分享你的想法 Test+.validate(..)不应该是Test.validate(..)吗?为什么不创建注释来标记要应用aop的方法?按照现在的工作方式,每次要更改要运行aop的方法列表时,都必须更新特定于aop的代码,即使它们都应该执行完全相同的操作。@Stultuske,在所有实现中都需要该aop。但是,Test.validate(..)现在可以工作了。@Stultuske,创建自定义注释也不能工作。它向我显示带有消息“3 Spring AOP marker at this line”的标记。Spring AOP与代理一起工作。由于代理的原因,AOP将只应用于进入对象的方法调用,当进行内部方法调用时(就像您正在做的),它们不会通过代理,因此不会应用AOP。