【发布时间】:2017-11-08 10:03:53
【问题描述】:
将 Spring 中的 @Autowired 字段设置为 private 是否适合 DI 提议?
我认为应该是因为没有人想直接在课堂之外访问这些字段。
但另一方面,Spring 需要访问这些。我知道当他们是私人的时候它也可以这样做,但它会造成麻烦吗?例如性能问题? (如果我在这种情况下理解得很好,Spring 使用了反射,这可能会导致性能小幅下降。)还是这无关紧要?
我在谷歌上搜索并阅读了搜索此问题答案的教程,但没有找到任何“好的”答案。
哪个是这些字段的访问修饰符的最佳选择? 您能否帮助我理解这一点或向我指出一个资源,我可以从哪里开始找到答案?
【问题讨论】:
-
这取决于您的应用程序字段的可见性。如果用
@Autowired注解是独立的? -
“最好”的方式是通过构造函数注入使用自动装配。但最好的东西真的是固执己见。只需按照 Spring 文档告诉您的操作即可,就这么简单。 docs.spring.io/spring-boot/docs/current/reference/html/…
-
那么使用发生 DI 的私有字段不会导致性能下降或其他问题?
-
@Gimby 我不会说它自以为是地破坏了依赖注入的想法,你完全依赖 Spring 注入到该领域,没有简单的手动方法 - 从单元测试 PoV 思考,它还掩盖了配置中的 bean 创建,例如实际需要什么。 Jurgen Holler 曾表示,如果可能的话,他将取消现场注入。你应该总是尝试构造器>设置器>字段注入。构造函数注入意味着该字段也可以成为最终的。