此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Boot 3.3.1Spring中文文档

此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Boot 3.3.1Spring中文文档

您可以自由地使用任何标准的 Spring Framework 技术来定义您的 Bean 及其注入的依赖项。 我们通常建议使用构造函数注入来连接依赖关系并查找 bean。@ComponentScanSpring中文文档

如果按照上面的建议构建代码(将应用程序类放在顶部包中),则可以在没有任何参数的情况下添加代码,也可以使用隐式包含它的注释。 所有应用程序组件(、、、等)都会自动注册为 Spring Beans。@ComponentScan@SpringBootApplication@Component@Service@Repository@ControllerSpring中文文档

下面的示例显示了一个使用构造函数注入来获取所需 Bean 的 Bean:@ServiceRiskAssessorSpring中文文档

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

如果一个 bean 有多个构造函数,则需要标记您希望 Spring 使用的构造函数:@AutowiredSpring中文文档

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
	}

	// ...

}
请注意,使用构造函数注入如何将字段标记为 ,表明该字段随后无法更改。riskAssessorfinal
请注意,使用构造函数注入如何将字段标记为 ,表明该字段随后无法更改。riskAssessorfinal