在 Spring 中选择 @Autowired 和构造函数注入:哪个是最佳实践?

问题描述 投票:0回答:1

在我的 Spring 项目中,我使用 @Autowired构造函数注入 将依赖项注入到我的服务中。虽然这两种方法都有效,但我不确定哪一种在可维护性、可测试性和整体代码质量方面被认为是最佳实践。

我已将

@Autowired
用于某些服务,并为其他服务使用构造函数注入,并且我正在寻求有关何时使用其中一种服务的指导。在我的 Spring 项目中我应该优先考虑哪种方法,哪些因素或场景对其中一种方法有利?

感谢您的帮助和指导!

java spring-boot dependency-injection constructor autowired
1个回答
0
投票

Spring等依赖注入框架通过使用@Inject、@Autowired等注解来支持依赖注入。这些注释可用于通过构造函数、setter 和字段注入来注入 bean。 一般来说,不鼓励现场注入。它允许创建处于无效状态的对象并使测试变得更加困难。实例化使用字段注入的类时,依赖关系并不明确。 此外,字段注入与最终字段不兼容。尽可能保持依赖关系不可变可以使代码更易于理解,从而简化开发和维护。 最后,由于值是在构造对象之后注入到字段中的,因此它们不能用于内联初始化其他非注入字段。 当在字段上使用 @Autowired 或 @Inject 注释时,此规则会引发问题。

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