基于 Spring Boot 构造函数的依赖注入(inject)

标签 spring spring-boot dependency-injection

我是 Spring Boot 和依赖注入(inject)的初学者,我无法理解 Spring Boot 中基于构造函数的依赖注入(inject)。我有一个类叫 ParameterDate看起来像这样:

public class ParameterDate {

    private Date parameterDateUnadjusted;
    private Date parameterDateAdjusted;
    private Date parameterDateAdded;
    private Date parameterDateChanged;
}

我有另一个类(class),我想使用 ParameterDate .通常我会做基于现场的注入(inject)
@Autowired
ParameterDate parameterDate;

在需要的地方,我只需使用 parameterDate .

我将如何使用基于构造函数的注入(inject)来做到这一点?

最佳答案

public MyClazzRequiringParameterDate(ParameterDate parameterDate){
     this.parameterDate = parameterDate;
}

自启动 1.4 @Autowired如果您有 ,则在构造函数上是可选的一个 构造函数 Spring 将尝试 Autowiring 它。您可以使用 @Autowired 标记构造函数如果你想明确一点。

一般来说,您应该支持 Constructor > Setter > Field injection。直接注入(inject)到字段中错过了 DI 的要点,这也意味着您的测试依赖于 Spring 来注入(inject)依赖项,而不仅仅是能够将模拟或 stub 直接传递给它。 Jurgen Holler 曾表示,如果可能,他将取消现场注入(inject)。

关于基于 Spring Boot 构造函数的依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44356779/

相关文章:

java - 依赖注入(inject)和多个实例

spring - CryptoServicesRegistrar.isInApprovedOnlyMode() 和 CryptoServicesRegistrar.setApprovedOnlyMode(true) 已在充气城堡中删除

Java多线程在单元测试中不更新值

java - spring boot RequestBody 不起作用

在 tomcat 容器中具有多个 Web 应用程序的 Spring Boot 执行器引发 javax.management.InstanceAlreadyExistsException 异常

java - 具有 Spring IoC 的 Null 内部 Bean

php - Symfony 3.3 依赖注入(inject)变化

java - 如何处理 Spring Security AuthenticationProvider 抛出的运行时异常?

regex - 如何在 spring boot 中使用正则表达式输入字段进行验证

angular - 使用 Spring Boot 从服务器端重定向到 Angular 路由