Spring Beans 和 依赖注入.
您可以自由地使用任何标准Spring框架技术来定义您的bean和它们 的 bean的 依赖项注入。为了简单起见,我们经常发现使用 @ComponentScan(查找bean) ,使用@Autowired(用于构造函数注入)工作得很好。
如果按照上面的建议构造代码(将应用程序类定位在根包中),则需要可以添加@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,表示它随后无法更改。