Spring - setter注入方法修饰符

时间:2011-09-24 03:58:20

标签: spring

完全基本的问题,但允许使用什么类型的修饰符进行Spring setter注入。我正在使用Spring Proxy AOP并注意到只有公共方法被代理,所以考虑将我的类中的setter方法切换到protected / package ... setter注入仍然有用吗?我在文档中找不到有关修饰符类型的任何内容。

2 个答案:

答案 0 :(得分:2)

对于通过XML配置的bean,我认为setter方法必须是公共的。默认情况下,Spring AOP使用动态代理,它仅适用于定义为接口一部分的方法。因此,如果不在接口中包含setter方法,则可以将它们从AOP中排除。

答案 1 :(得分:0)

  • 我正在使用Spring Proxy AOP并注意到只有公共方法被代理
来自Spring Documentation的

“由于Spring的AOP框架基于代理的特性,根据定义,受保护的方法既不会被拦截,也不会被JDK代理(这是不适用的),也不是CGLIB代理(这在技术上是可行的但是不建议用于AOP)。因此,任何给定的切入点都只能与公共方法匹配!“

“如果您的拦截需要包括受保护/私有方法甚至构造函数,请考虑使用Spring驱动的原生AspectJ编织而不是Spring的基于代理的AOP框架。这构成了具有不同特征的不同AOP使用模式所以在做出决定之前一定要先熟悉编织。“