对于最新稳定版本,请使用Spring Boot 4.0.0spring-doc.cadn.net.cn

春豆与依赖注入

你可以自由使用任何标准的 Spring Framework 技术来定义你的豆子及其注入依赖。 我们通常建议使用构造器注入来连接依赖关系,@ComponentScan去找豆子。spring-doc.cadn.net.cn

如果你按照上面建议的结构化代码(把应用类放在顶部包里),你可以添加@ComponentScan无需任何论元或使用@SpringBootApplication注释中隐含了它。 你所有的应用组件(@Component,@Service,@Repository,@Controller以及其他)自动注册为春豆。spring-doc.cadn.net.cn

以下示例展示了一个@Service使用构造子注入获得所需风险评估员豆:spring-doc.cadn.net.cn

import org.springframework.stereotype.Service;

@Service
public class MyAccountService implements AccountService {

	private final RiskAssessor riskAssessor;

	public MyAccountService(RiskAssessor riskAssessor) {
		this.riskAssessor = riskAssessor;
	}

	// ...

}
import org.springframework.stereotype.Service

@Service
class MyAccountService(private val riskAssessor: RiskAssessor) : AccountService

如果一个豆子有多个构造体,你需要标记你想让Spring使用的构造物@Autowired:spring-doc.cadn.net.cn

import java.io.PrintStream;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class MyAccountService implements AccountService {

	private final RiskAssessor riskAssessor;

	private final PrintStream out;

	@Autowired
	public MyAccountService(RiskAssessor riskAssessor) {
		this.riskAssessor = riskAssessor;
		this.out = System.out;
	}

	public MyAccountService(RiskAssessor riskAssessor, PrintStream out) {
		this.riskAssessor = riskAssessor;
		this.out = out;
	}

	// ...

}
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Service
import java.io.PrintStream

@Service
class MyAccountService : AccountService {

	private val riskAssessor: RiskAssessor

	private val out: PrintStream

	@Autowired
	constructor(riskAssessor: RiskAssessor) {
		this.riskAssessor = riskAssessor
		out = System.out
	}

	constructor(riskAssessor: RiskAssessor, out: PrintStream) {
		this.riskAssessor = riskAssessor
		this.out = out
	}

	// ...

}
注意使用构造子注入可以风险评估员字段标记为最后,表示此后无法更改。