你能夠自由使用任何標準Spring框架技術來定義bean及其注入的依賴項,爲了簡單起見,咱們常常發現使用@ComponentScan
(找到你的bean)和使用@Autowired
(進行構造函數注入)工做得很好。spring
若是按照上面建議的方式構造代碼(在根包中定位應用程序類),能夠不帶任何參數添加@ComponentScan
,全部應用程序組件(@Component
、@Service
、@Repository
、@Controller
等)都自動註冊爲Spring bean。segmentfault
下面的示例顯示了一個@Service
Bean,它使用構造函數注入來得到所需的RiskAssessor
Bean:框架
package com.example.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class DatabaseAccountService implements AccountService { private final RiskAssessor riskAssessor; @Autowired public DatabaseAccountService(RiskAssessor riskAssessor) { this.riskAssessor = riskAssessor; } // ... }
若是一個bean有一個構造函數,你能夠省略@Autowired
,以下例所示:函數
@Service public class DatabaseAccountService implements AccountService { private final RiskAssessor riskAssessor; public DatabaseAccountService(RiskAssessor riskAssessor) { this.riskAssessor = riskAssessor; } // ... }
注意,如何使用構造函數注入使riskAssessor
字段被標記爲final
,表示它不能隨後更改。