# 17\. Spring Beans 和 依賴注入
您可以自由使用任何標準的Spring Framework技術來定義您的bean及其依賴注入關系。 為了簡單起見,我們發現使用@ComponentScan搜索bean,結合@Autowired構造函數(constructor)注入效果很好。
如果您按照上述建議(將應用程序類放在根包(root package)中)構建代碼,則可以使用 @ComponentScan而不使用任何參數。 所有應用程序組件(@Component,@Service,@Repository,@Controller等)將自動注冊為Spring Bean。
以下是一個@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,表示不能更改。
- Part I. Spring Boot 文檔
- Part II. 入門指南
- 8. Spring Boot 介紹
- 9. 系統要求
- 10. 安裝 Spring Boot
- 11. 開發您的第一個Spring Boot應用程序
- 12. 接下來應該讀什么
- Part III. 使用 Spring Boot
- 13. 構建系統
- 14. 構建代碼
- 15. 配置類
- 16. 自動配置
- 17. Spring Beans 和 依賴注入
- 18. 使用@SpringBootApplication注解
- 19. 運行你的應用程序
- 20. 開發工具
- 21. 包裝您的應用程序到生產環境
- 22. 接下來應該讀什么
- Part IV. Spring Boot 功能
- 23. SpringApplication
- 24. 外部配置
- 25. 配置文件(Profiles)
- 26. 日志
- 27. 開發Web應用程序
- 28. Security
- 29. 使用SQL數據庫