📜  Spring构造函数注入(1)

📅  最后修改于: 2023-12-03 15:20:13.844000             🧑  作者: Mango

Spring 构造函数注入

在 Spring 中,构造函数注入是一种很常用的依赖注入方式。它和其他的依赖注入方式有些许不同,但一般来说都是在以下三种情况下被使用:

  • 构造函数参数太多,难以进行 setter 注入;
  • 需要保证依赖的非空性,并且能在对象被创建时就进行注入;
  • 偏好于使用构造函数进行依赖注入。
构造函数注入的优势

使用构造函数注入的优势有以下几点:

  • 能够保证依赖的非空性,在对象被创建时就进行注入;
  • 易于测试,不需要进行 mock 对象的设置;
  • 将属性构造和对象构造联合在一起,提高代码的可读性。
实现构造函数注入的方式

接下来我们来了解一下如何在 Spring 中实现构造函数注入。

XML 方式
<bean id="exampleBean" class="com.example.Bean">
    <constructor-arg ref="dependencyBean" />
    <constructor-arg type="java.lang.String" value="test" />
    <constructor-arg type="int" value="10" />
</bean>

<bean id="dependencyBean" class="com.example.DependencyBean" />

在上述 XML 配置中,我们在 <bean> 元素中使用 <constructor-arg> 元素来进行构造函数注入。每个 <constructor-arg> 元素代表一个构造函数中的参数,可以指定参数的类型和值。如果参数中有依赖,可以使用 ref 属性来指定依赖的 bean 名称。

注解方式
@Component
public class ExampleBean {
    private DependencyBean dependencyBean;
    private String name;
    private int value;

    @Autowired
    public ExampleBean(DependencyBean dependencyBean, @Value("test") String name, @Value("10") int value) {
        this.dependencyBean = dependencyBean;
        this.name = name;
        this.value = value;
    }
}

@Component
public class DependencyBean {}

在上述代码示例中,我们使用 @Autowired 注解和 @Value 注解来实现构造函数注入。@Autowired 注解在构造函数上声明,表示需要注入的依赖;@Value 注解则可以用来指定参数的值。

总结

构造函数注入是一种很常用的依赖注入方式,好处有很多,使用起来也很方便。在 Spring 中,我们可以使用 XML 或者注解来实现构造函数注入。在选择注入方式的时候,我们需要根据具体情况来进行选择。