2017-06-04 148 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表示,如果可能的話,他會刪除野外注射。