Spring getter和setter依赖?

问题描述 投票:2回答:3

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

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

java spring inversion-of-control setter getter
3个回答
0
投票

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

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

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

不幸的是,XML方法没有考虑私有领域(我知道)。您需要添加setter,使用构造函数或设置某种自动装配。

请记住,自动装配可以与XML结合使用。即使您通过xml创建bean(与@Component和组件扫描相反),Spring也会关注您的布线注释。


0
投票

没有必要让Setter注入引用,你可以在类的公共变量或setter方法上使用Autowire,你也可以使用constructor-arg注入bean,这是一种注入依赖关系和自动装配的好方法。也在构造函数上完成。 @inject也具有与@autowired相同的功能,但@Autowired还有一个额外的行为,它在内部也使用@required属性,以查看bean是否有引用并正确注入。


0
投票

除了二次注射外,Spring还为DI提供了几种替代方案。例如,您可以使用constructor injection。或者,您可以使用Spring的@Autowired注释进行构造函数,字段或setter注入。既然你提到了它,我想你也会对知道Spring支持@Inject注释感兴趣。

© www.soinside.com 2019 - 2024. All rights reserved.