2

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

有没有替代方案。据我了解,Java EE 的 @Inject 注释可以毫无问题地做到这一点。但我一直更倾向于春天。

4

3 回答 3

1

这取决于您如何创建 bean。Spring 不需要设置器。还有许多其他方法:

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

公共领域(如您所建议的)可能会起作用,尽管我从未尝试过,并且即使这样做也会建议不要这样做。

不幸的是,XML 方法不考虑私有字段(我知道)。您要么需要添加一个设置器,使用构造函数,要么设置某种自动装配。

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

于 2012-10-23T03:17:46.960 回答
1

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

于 2012-10-23T05:03:29.687 回答
1

除了 setter 注入之外,Spring 还为 DI 提供了几种替代方案。例如,您可以使用构造函数注入。或者,您可以将 Spring 的@Autowired注释用于构造函数、字段或 setter 注入。既然你提到了它,我想你也会有兴趣知道 Spring 支持@Inject注释。

于 2012-11-11T14:55:13.047 回答