您可以自由使用任何标准的Spring Framework技术来定义bean及其注入的依赖项。我们经常发现使用@ComponentScan(查找您的bean)和使用@Autowired(进行构造函数注入)效果很好。
    如果按照上面的建议构造代码(将应用程序类放在根包中),则可以在应用程序类上添加@ComponentScan而无需任何参数则可以自动查找bean。所有应用程序组件(@Component@Service@Repository@Controller等)自动注册为Spring Bean。
    以下示例显示了一个@Service Bean使用构造函数注入,来获取所需RiskAssessorBean:

    1. package com.example.service;
    2. import org.springframework.beans.factory.annotation.Autowired;
    3. import org.springframework.stereotype.Service;
    4. @Service
    5. public class DatabaseAccountService implements AccountService {
    6. private final RiskAssessor riskAssessor;
    7. @Autowired
    8. public DatabaseAccountService(RiskAssessor riskAssessor) {
    9. this.riskAssessor = riskAssessor;
    10. }
    11. // ...
    12. }

    如果bean具有一个构造函数,则可以省略@Autowired,如以下示例所示:

    1. @Service
    2. public class DatabaseAccountService implements AccountService {
    3. private final RiskAssessor riskAssessor;
    4. public DatabaseAccountService(RiskAssessor riskAssessor) {
    5. this.riskAssessor = riskAssessor;
    6. }
    7. // ...
    8. }

    灯泡.svg 请注意,使用构造函数注入将riskAssessor字段标记为final,指示该字段随后不能更改。