【问题标题】:Spring getter and setter dependent?Spring getter 和 setter 依赖?
【发布时间】:2012-10-12 22:16:28
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-10-17
          • 2016-02-24
          相关资源
          最近更新 更多