请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于方法上的注解无法生成动态代理问题

为什么在类中访问添加了注解的方法时会绕过代理,使得代理没办法做aop?这里可以详细解释下吗?

正在回答 回答被采纳积分+3

1回答

Zachry_Zhang 2021-12-16 18:39:24

如果你的问题是针对于@Async的话,那么情况是这样的:对被@Async注解方法的拦截实现是基于spring aop的,要使aop生效(基于代理,jdk proxy通过接口代理或者cglib通过继承类代理),方法必须可以被代理类提取到,完成代理类方法->目标类方法的调用。
那什么情况下会失效?
1. 方法为private或protected:因为无法为这两者创建代理类方法
2. 目标类内部调用:此时调用链路为"代理类方法->目标类方法A->目标类方法B",方法A到B不会走代理类
如果你需要对private/protected方法进行拦截的话,可以使用AspectJ weaving来取代Spring AOP

希望以上的解答能帮到你

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号