我想确定我是否理解正确。 Spring需要一个setter来注入字段引用吗?只是将它作为一个公共领域来检测它不能做到吗?
有替代方案吗?据我所知,Java EE的@Inject注释可以毫无问题地完成。但我一直更倾向于春天。
答案 0 :(得分:0)
这取决于你是如何创建bean的。 Spring不需要setter。还有很多其他方法:
公共字段(如你所建议的)可能会起作用,虽然我从来没有尝试过,并且即使它确实反对它也会提出建议。
不幸的是,XML方法不会查看私有字段(我知道)。您需要添加一个setter,使用构造函数或设置某种自动装配。
请记住,自动装配可以与XML结合使用。即使您通过xml创建bean(而不是像@Component和组件扫描那样),Spring也会关注您的布线注释。
答案 1 :(得分:0)
没有必要让Setter注入引用,你可以在类的公共变量或setter方法上使用Autowire,你也可以使用constructor-arg注入bean,这是一种注入依赖关系的好方法自动装配也可以在构造函数上完成。 @inject也具有与@autowired相同的功能,但@Autowired还有一个额外的行为,它在内部也使用@required属性,以查看bean是否有引用并正确注入。
答案 2 :(得分:0)
除了二次注射外,Spring还为DI提供了几种替代方案。例如,您可以使用constructor injection。或者,您可以使用Spring的@Autowired注释进行构造函数,字段或setter注入。既然你提到了它,我想你也会对知道Spring支持@Inject注释感兴趣。