java – 使用Spring AOP时是否所有方法都被代理?
作者:互联网
使用Spring AOP使用NameMatchMethodPointcutAdvisor和BeanNameAutoProxyCreator为类创建代理时,这基本上代理了对该对象的每次调用,但仅将建议应用于匹配的方法,或者以某种方式创建仅具有这些方法并使用正常的Proxied对象应该被截获的呼叫的对象?
方式,我想我明白它确实代理了对对象的每次调用,但后来只调用匹配方法的顾问 – 但我找不到一个好的例子/帖子来确认这一点.
解决方法:
取决于使用的技术. (它可以通过aop配置中的属性proxy-target-class进行配置)
> JDK动态代理是接口的代理 – 正如您所说,接口的每个方法都通过代理,如果匹配恰好是“建议”方法,则应用顾问程序.否则,它被委托给原始对象
> CGLIB代理是在具体类的运行时定义的有效子类.我不能确定这一点,但我假设只覆盖了“建议”方法,其余方法保留了超类的定义.
但是,无论使用哪种机制:
>您不关心代理是如何实现的
>这不会对性能产生重大影响 – 由Spring团队提供有关代理性能神话的Debunking myths: proxies impact performance
标签:java,spring,aop,dynamic-proxy 来源: https://codeday.me/bug/20190607/1191514.html