📜  Spring构造函数注入

📅  最后修改于: 2020-12-04 07:17:02             🧑  作者: Mango

通过构造函数示例进行依赖注入

我们可以通过构造函数注入依赖项。 子元素用于构造函数注入。在这里我们要注入

  • 基本和基于字符串的值
  • 从属对象(包含对象)
  • 收集值等

注入原始值和基于字符串的值

让我们看一个简单的示例,以注入原始值和基于字符串的值。我们在这里创建了三个文件:

  • Employee.java
  • applicationContext.xml
  • Test.java

这是一个简单的类,包含两个字段id和name。此类中有四个构造函数和一个方法。

package com.javatpoint;

public class Employee {
private int id;
private String name;

public Employee() {System.out.println("def cons");}

public Employee(int id) {this.id = id;}

public Employee(String name) {    this.name = name;}

public Employee(int id, String name) {
    this.id = id;
    this.name = name;
}

void show(){
    System.out.println(id+" "+name);
}

}

我们通过此文件将信息提供给Bean。 constructor-arg元素调用构造函数。在这种情况下,将调用int类型的参数化构造函数。 Constructor-arg元素的value属性将分配指定的值。 type属性指定将调用int参数构造函数。









此类从applicationContext.xml文件获取Bean并调用show方法。

package com.javatpoint;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.*;

public class Test {
    public static void main(String[] args) {
        
        Resource r=new ClassPathResource("applicationContext.xml");
        BeanFactory factory=new XmlBeanFactory(r);
        
        Employee s=(Employee)factory.getBean("e");
        s.show();
        
    }
}

输出: 10空

注入基于字符串的值

如果未在构造函数arg元素中指定type属性,则默认情况下将调用字符串类型的构造函数。

....



....

如果按上述方法更改bean元素,则将调用字符串参数构造函数,并且输出将为0 10。

输出: 0 10

您还可以按以下方式传递字符串字面量:

....



....

输出: 0 Sonoo

您可以同时传递整数字面量和字符串,如下所示

....




....

输出: 10 Sonoo