2017-06-04 71 views
0

我是Spring Boot和Dependency Injection的初学者,我无法在Spring Boot中使用基于构造函数的依赖注入。我有类调用ParameterDate看起来像这样:基于Spring Boot构造函数的依赖注入

public class ParameterDate { 

    private Date parameterDateUnadjusted; 
    private Date parameterDateAdjusted; 
    private Date parameterDateAdded; 
    private Date parameterDateChanged; 
} 

我有另一个类,我想用ParameterDate。通常情况下,我会做基于现场注射液

@Autowired 
ParameterDate parameterDate; 

何地需要我只是用parameterDate

我该如何做基于构造函数的注入?

+0

http://olivergierke.de/2013/11/why-field-injection-is-evil/写得很好 – pvpkiran

+0

@pvpkiran谢谢。我会阅读建议的帖子。 – g3blv

+0

[Setter DI与Spring中的构造函数DI的可能重复?](https://stackoverflow.com/questions/7779509/setter-di-vs-constructor-di-in-spring) –

回答

2
public MyClazzRequiringParameterDate(ParameterDate parameterDate){ 
    this.parameterDate = parameterDate; 
} 

自启动1.4 @Autowired在构造函数中是可选的。如果您想明确说明,您可以使用@Autowired来标记构造函数。

一般来说,你应该青睐构造函数> Setter> Field injection。直接向域注入会错过DI的观点,这也意味着你的测试依赖于Spring来依赖注入,而不仅仅是将模拟或存根直接传递给它。 Jurgan Holler表示,如果可能的话,他会删除野外注射。