Spring getter和setter依赖?

时间:2012-10-23 02:23:51

标签: java spring inversion-of-control setter getter

我想确定我是否理解正确。 Spring需要一个setter来注入字段引用吗?只是将它作为一个公共领域来检测它不能做到吗?

有替代方案吗?据我所知,Java EE的@Inject注释可以毫无问题地完成。但我一直更倾向于春天。

3 个答案:

答案 0 :(得分:0)

这取决于你是如何创建bean的。 Spring不需要setter。还有很多其他方法:

  • 通过字段级别的注释自动装配(使用或不使用限定符)
  • 构造函数注入(通过代码中的xml或注释)

公共字段(如你所建议的)可能会起作用,虽然我从来没有尝试过,并且即使它确实反对它也会提出建议。

不幸的是,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注释感兴趣。