使用Spring AOP时是否所有方法都代理了?

Gan*_*alf 4 java aop spring dynamic-proxy

当使用Spring AOP使用NameMatchMethodPointcutAdvisorBeanNameAutoProxyCreator为类创建代理时,这实际上代理了对该对象的每次调用,但仅将建议应用于匹配的方法,或者以某种方式创建仅具有这些方法并使用正常的Proxied对象应该被截获的呼叫的对象?

方式,我想我明白它确实代理了对对象的每次调用,但后来只调用匹配方法的顾问 - 但我找不到一个好的例子/帖子来确认这一点.

Boz*_*zho 6

取决于使用的技术.(它可以通过proxy-target-classaop配置中的属性进行配置)

  • JDK动态代理是接口的代理 - 正如您所说,接口的每个方法都通过代理,如果匹配恰好是"建议"方法,则应用顾问程序.否则,它被委托给原始对象

  • CGLIB代理是在具体类的运行时定义的有效子类.我不能确定这一点,但我假设只覆盖了"建议"方法,其余方法保留了超类的定义.

但是,无论使用哪种机制:

  • 您不关心代理是如何实现的
  • 这不会对性能产生重大影响 - 揭穿神话:代理会影响 Spring团队关于代理性能神话的性能