Spring装配对象方法
Spring通过XML使用构造方法为对象装配属性。
通过参数顺序
通过参数类型
通过参数顺序和类型

beans.xml
xml
<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.xsd">
<bean id="userinfo" class="com.hk.hr.UserInfo">
<constructor-arg index="0" type="java.lang.String">
<value>Java</value>
</constructor-arg>
<constructor-arg index="1" type="java.lang.String">
<value>Oracle</value>
</constructor-arg>
<constructor-arg index="2" type="java.lang.Integer">
<value>30</value>
</constructor-arg>
<property name="id" value="user"/>
<property name="name" value="java"/>
</bean>
<bean name="orginfo" class="com.hk.hr.OrgInfo" p:name="oracle" p:mgr-ref="userinfo">
</bean>
<bean name="orginfo2" class="com.hk.hr.OrgInfo" p:name="oracle" p:mgr-ref="userinfo">
<property name="users">
<list>
<value>Java</value>
<value>Python</value>
<ref bean="userinfo"/>
</list>
</property>
<property name="roles">
<list>
<value>管理员</value>
<value>浏览者</value>
<ref bean="userinfo"/>
</list>
</property>
<property name="maps">
<map>
<entry key="key01" value="Java"/>
<entry key="key02" value="Android"/>
</map>
</property>
<property name="prop">
<props>
<prop key="key01">Value1</prop>
<prop key="key02">Value2</prop>
</props>
</property>
</bean>
</beans>
UserInfo.java
java
package com.hk.hr;
public class UserInfo {
private String id = null;
private String name = null;
private Integer age = null;
/**
public UserInfo()
{
System.out.println("UserInfo()");
}
*/
public UserInfo(String id,String name)
{
this.id = id;
this.name = name;
System.out.println("UserInfo1:id="+id+",name="+name);
}
public UserInfo(String id,String name,Integer age)
{
this.id = id;
this.name = name;
this.age = age;
System.out.println("UserInfo2:id="+id+",name="+name+",age="+age);
}
public UserInfo(String id,String name,String age)
{
this.id = id;
this.name = name;
this.age = Integer.parseInt(age);
System.out.println("UserInfo3:id="+id+",name="+name+",age="+age);
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Main.java
java
package com.hk.hr;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Main {
public static void main(String[] args)
{
ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
UserInfo ui = (UserInfo)ac.getBean("userinfo");
System.out.println("ui2="+ui);
OrgInfo oi = (OrgInfo)ac.getBean("orginfo");
System.out.println("oi="+oi);
OrgInfo oi2 = (OrgInfo)ac.getBean("orginfo2");
System.out.println("oi2="+oi2);
}
}


为了避免Spring调用构造方法出现混淆,使用参数顺序和参数类型限定构造方法