春天引导构造基于依赖注入

问题描述 投票:1回答:2

我和春天引导和依赖注入一个初学者,我不能让我的周围是构造依赖注入头春天启动。我有类调用ParameterDate看起来像这样:

public class ParameterDate {

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

我有另一个类,我想用ParameterDate。通常情况下,我会做基于现场注射液

@Autowired
ParameterDate parameterDate;

何地需要我只是用parameterDate

我将如何做到这一点与基于构造器注入?

spring spring-boot dependency-injection
2个回答
10
投票
public MyClazzRequiringParameterDate(ParameterDate parameterDate){
     this.parameterDate = parameterDate;
}

由于启动1.4 @Autowired一直在构造可选。如果你想明确一下,你可以只用标签的@Autowired构造。

一般来说,你应该有利于构造>二传手>字段注入。直接注射到外地错过DI的角度来看,这也意味着你的测试依赖于Spring来进行依赖注入,而不是仅仅能够嘲笑或存根直接传递给它。 Jurgan奥莱曾表示,他将如果在所有可能的领域取出注射。


1
投票
@Component    
public class ParameterDate {

    private Date parameterDate;

@Autowired
public ParameterDate(Date parameterDate){
this.parameterDate = parameterDate;
}
}

以上是构造器注入的例子。

请注意,您可以使用@Autowired注解还对属性的setter方法,由于有setter方法没有什么区别(当然除了它的目的,逻辑包含)和任何其他方法,您可以在几乎任何方法使用@Autowired班级。由于自动装配和组件扫描齐头并进,你应当标注@Component来注解你的类。这告诉Spring是一个bean应该为这个类来创建。

© www.soinside.com 2019 - 2024. All rights reserved.