在我的 Spring 项目中,我使用 @Autowired 和 构造函数注入 将依赖项注入到我的服务中。虽然这两种方法都有效,但我不确定哪一种在可维护性、可测试性和整体代码质量方面被认为是最佳实践。
我已将
@Autowired
用于某些服务,并为其他服务使用构造函数注入,并且我正在寻求有关何时使用其中一种服务的指导。在我的 Spring 项目中我应该优先考虑哪种方法,哪些因素或场景对其中一种方法有利?
感谢您的帮助和指导!
Spring等依赖注入框架通过使用@Inject、@Autowired等注解来支持依赖注入。这些注释可用于通过构造函数、setter 和字段注入来注入 bean。 一般来说,不鼓励现场注入。它允许创建处于无效状态的对象并使测试变得更加困难。实例化使用字段注入的类时,依赖关系并不明确。 此外,字段注入与最终字段不兼容。尽可能保持依赖关系不可变可以使代码更易于理解,从而简化开发和维护。 最后,由于值是在构造对象之后注入到字段中的,因此它们不能用于内联初始化其他非注入字段。 当在字段上使用 @Autowired 或 @Inject 注释时,此规则会引发问题。