在依赖注入中有一个spring构造器注入方式,它是在<bean>的子标签<constructor-arg>里面的,spring构造函数中的参数有基本类型,对象类型,collection集合,map类型等等,下面的案例以注入基本类型参数为例。
我们将创建如下这三个类,用来学习spring的构函数注入,如下:
Employee.java
applicationContext.xml
Test.java
1:新建一个Employee员工实体类,实体类中有4个构造函数与一个普通方法,如下。
package com.tpyyes; 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; } public void show(){ System.out.println(id+" "+name); } }
2:新建applicationContext.xml文件,配置构造器注入bean,用于spring构造函数注入,constructor-arg元素表示将调用构造函数,type="int"表示调用的是参数为int的构造函数,value属性表示给该构造函数设置值,如下。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd"> <bean id="emp" class="com.tpyyes.Employee"> <constructor-arg value="10" type="int"></constructor-arg> </bean> </beans>
3:新建Test.java类,用于测试我们给public Employee(int id)这个构造函数设置的值是否成功,并且能够成功调用show()方法,代码如下。
package com.tpyyes; 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 res=new ClassPathResource("applicationContext.xml"); BeanFactory factory=new XmlBeanFactory(res); Employee s=(Employee)factory.getBean("emp"); s.show(); } }
Output输出如下字符串:10 null
注释:如果没有指定type类型,则默认调用参数为string字符串类型的构造函数,调用的是这个构造函数public Employee(String name),如下:
.... <bean id="e" class="com.javatpoint.Employee"> <constructor-arg value="张三"></constructor-arg> </bean> ....
Output输出结果:0 张三
如果想调用public Employee(int id, String name)这个有两个参数的构造函数,可以在constructor-arg元素里面加入参数,代码如下:
.... <bean id="emp" class="com.javatpoint.Employee"> <constructor-arg value="10" type="int" ></constructor-arg> <constructor-arg value="张三"></constructor-arg> </bean> ....
Output输出结果:10 张三
完毕!
如果对小编有什么建议或意见,可以加入微信公众号:太平洋学习网,与小编一起成长。