我是 Spring Boot 和依赖注入(inject)的初学者,我无法理解 Spring Boot 中基于构造函数的依赖注入(inject)。我有一个类叫 ParameterDate
看起来像这样:
public class ParameterDate {
private Date parameterDateUnadjusted;
private Date parameterDateAdjusted;
private Date parameterDateAdded;
private Date parameterDateChanged;
}
我有另一个类(class),我想使用
ParameterDate
.通常我会做基于现场的注入(inject)@Autowired
ParameterDate parameterDate;
在需要的地方,我只需使用
parameterDate
.我将如何使用基于构造函数的注入(inject)来做到这一点?
最佳答案
public MyClazzRequiringParameterDate(ParameterDate parameterDate){
this.parameterDate = parameterDate;
}
自启动 1.4
@Autowired
如果您有 ,则在构造函数上是可选的一个 构造函数 Spring 将尝试 Autowiring 它。您可以使用 @Autowired
标记构造函数如果你想明确一点。一般来说,您应该支持 Constructor > Setter > Field injection。直接注入(inject)到字段中错过了 DI 的要点,这也意味着您的测试依赖于 Spring 来注入(inject)依赖项,而不仅仅是能够将模拟或 stub 直接传递给它。 Jurgen Holler 曾表示,如果可能,他将取消现场注入(inject)。
关于基于 Spring Boot 构造函数的依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44356779/