我想确认一下我的理解是否正确。 Spring需要一个setter来注入(inject)字段引用吗?难道仅仅将其检测为公共(public)字段就不能做到这一点吗?
有没有替代方案。据我了解,Java EE 的 @Inject 注释可以毫无问题地做到这一点。但我一直更倾向于Spring。
最佳答案
这取决于您创建 bean 的方式。 Spring 不需要 setter。还有许多其他方法:
- 通过字段级别的注释 Autowiring (带或不带限定符)
- 构造函数注入(inject)(通过 xml 或代码中的注释)
公共(public)字段(如您所建议的)可能会起作用,尽管我从未尝试过,并且即使它起作用也会建议不要这样做。
不幸的是,XML 方法不会研究私有(private)字段(据我所知)。您需要添加 setter、使用构造函数或设置某种 Autowiring 。
请记住, Autowiring 可以与 XML 结合使用。即使您通过 xml 创建 bean(而不是 @Component 和组件扫描之类的东西),Spring 也会关注您的接线注释。
关于java - Spring getter 和 setter 依赖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13022702/