17.Spring Beans and 依赖注入
-
您可以自由地使用任何标准的Spring Framework技术来定义bean及其注入的依赖项。为简单起见,我们经常发现使用
@ComponentScan
找到你的bean,结合@Autowired
构造函数注入效果很好。 -
如果按照上面的建议构建代码(14节,在根包中定义main application class),可以直接添加
@ComponentScan
注解,并且注解中可以不添加任何参数。所有的应用程序组件(使用@component
,@Service
,@Reponsitory
,@Controller
etc,注解的class),都会被自动注册为Spring Beans。 -
example:使用构造器注入
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,表示他随后无法修改