Java乔晓松spring构造函数的注入以及null的注入

spring构造函数的注入

spring最原始的构造函数的注入方式是:

<bean id="employee" class="www.csdn.spring.cust.Employee">
		<constructor-arg value="qiao" />
		<constructor-arg value="20" />
		<constructor-arg ref="dept" />
		<constructor-arg value="nv" />
	</bean>


下面的是常用的spring构造函数的注入方式

1、根据构造器参数的类型

<bean id="employee" class="www.csdn.spring.cust.Employee">
		<constructor-arg type="java.lang.String" value="qiao" />
		<constructor-arg type="java.lang.Integer" value="20" />
		<constructor-arg type="www.csdn.spring.cust.Dept" ref="dept" />
		<constructor-arg type="java.lang.String" value="nv" />
	</bean>


2、根据索引index注入

<bean id="employee" class="www.csdn.spring.cust.Employee">
		<constructor-arg index="0" value="qiao" />
		<constructor-arg index="1" value="20" />
		<constructor-arg index="2" ref="dept" />
		<constructor-arg index="3" value="nv" />
	</bean>


3、根据参数的名称注入

<bean id="employee" class="www.csdn.spring.cust.Employee">
		<constructor-arg name="name" value="qiao" />
		<constructor-arg name="age" value="20" />
		<constructor-arg name="dept" ref="dept" />
		<constructor-arg name="sex" value="nv" />
	</bean>



下面是我定义的2个类

Dept.java


package www.csdn.spring.cust;

public class Dept {

	public String num;
	public String name;

	public void setNum(String num) {
		this.num = num;
	}

	public void setName(String name) {
		this.name = name;
	}

	@Override
	public String toString() {
		return "Dept [num=" + num + ", name=" + name + "]";
	}

}

Employee.java

package www.csdn.spring.cust;

public class Employee {

	public String name;
	public Integer age;
	public Dept dept;
	public String sex;

	public Employee(String name, Integer age, Dept dept, String sex) {
		super();
		this.name = name;
		this.age = age;
		this.dept = dept;
		this.sex = sex;
	}

	@Override
	public String toString() {
		return "Member [name=" + name + ", age=" + age + ", dept=" + dept
				+ ", sex=" + sex + "]";
	}

}


spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd">

	<!-- <bean id="employee" class="www.csdn.spring.cust.Employee"> <constructor-arg 
		value="qiao" /> <constructor-arg value="20" /> <constructor-arg ref="dept" 
		/> <constructor-arg value="nv" /> </bean> -->
	<!-- <bean id="employee" class="www.csdn.spring.cust.Employee"> <constructor-arg 
		type="java.lang.String" value="qiao" /> <constructor-arg type="java.lang.Integer" 
		value="20" /> <constructor-arg type="www.csdn.spring.cust.Dept" ref="dept" 
		/> <constructor-arg type="java.lang.String" value="nv" /> </bean> -->

	<!-- <bean id="employee" class="www.csdn.spring.cust.Employee"> <constructor-arg 
		index="0" value="qiao" /> <constructor-arg index="1" value="20" /> <constructor-arg 
		index="2" ref="dept" /> <constructor-arg index="3" value="nv" /> </bean> -->
	<bean id="employee" class="www.csdn.spring.cust.Employee">
		<constructor-arg name="name" value="qiao" />
		<constructor-arg name="age" value="20" />
		<constructor-arg name="dept" ref="dept" />
		<constructor-arg name="sex" value="nv" />
	</bean>

	<bean id="dept" class="www.csdn.spring.cust.Dept">
		<property name="num" value="xx001" />
		<property name="name" value="教育部" />
	</bean>
</beans>


spring中null值的注入

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd">

	<bean id="employee" class="www.csdn.spring.cust.Employee">
		<!-- value="null" null是字符串 -->
		<property name="name">
			<null />
		</property>
		<property name="dept">
			<null />
		</property>
	</bean>

</beans>






原文地址:https://www.cnblogs.com/javawebsoa/p/3042347.html