如何解决Spring Aspectj Around 建议不适用于接口实现
interface A{
String methodA();
String methodB();
}
public class Impl1 implements A{
@Override
public String methodA() {
methodB();
return "";
}
@Override
public String methodB() {
return "";
}
}
public class Impl2 implements A{
@Override
public String methodA() {
methodB();
return "";
}
@Override
public String methodB() {
return null;
}
}
当A接口的任何实现&&methodB()的执行时,我想拦截什么。
@Around("within(com.bla.bla.A+) && execution(* methodB(..))")
但这没有用。当我删除执行部分时,它可以工作,但用于调用外部方法。任何想法将不胜感激。
注意:methodb 不会直接从接口触发。它在接口实现中触发。
解决方法
Spring AOP 适用于代理。从 methodA() 调用 methodB() 称为自调用。 Spring AOP 将无法建议从 methodA() 对 methodB() 的方法调用,因为它不会通过代理。
Spring 参考文档:Understanding AOP Proxies。通读以开头的部分,这里要理解的关键是 main(..) 中的客户端代码
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。