上代码:
app.xml
<!--app.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"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.3.xsd">
<bean name="date" class="java.util.Date"></bean>
<!-- 如何向构造方法里面传值 -->
<!-- String 和基本类型 -->
<bean class="club.shaoyu.vo.UserInfo" lazy-init="true" id="i">
<constructor-arg value="name" type="java.lang.String"></constructor-arg>
<constructor-arg value="12" type=""></constructor-arg>
</bean>
<!-- 自定义类 -->
<bean class="club.shaoyu.vo.UserInfo" lazy-init="true" id="d">
<constructor-arg ref="date"></constructor-arg>
</bean>
<!-- 数组类型 -->
<bean class="club.shaoyu.vo.UserInfo" lazy-init="true" id="a" >
<constructor-arg>
<array>
<bean class="java.lang.String">
<constructor-arg value="Tim"></constructor-arg>
</bean>
<value>Tim</value>
</array>
</constructor-arg>
</bean>
<!-- List 类型 -->
<bean class="club.shaoyu.vo.UserInfo" lazy-init="true" id="l">
<constructor-arg>
<list>
<value>12</value>
<value>123</value>
<value>1234</value>
<value>12345</value>
</list>
</constructor-arg>
</bean>
<!-- set集合中的自定义类型 -->
<bean class="club.shaoyu.vo.UserInfo" lazy-init="true" id="s">
<constructor-arg>
<set>
<bean class="java.util.Date"></bean>
<ref bean="date"/>
</set>
</constructor-arg>
</bean>
<!-- map集合 -->
<bean class="java.lang.String" name="x">
<constructor-arg value="小黑"></constructor-arg>
</bean>
<bean class="java.lang.Double" name="z">
<constructor-arg value="120"></constructor-arg>
</bean>
<bean class="club.shaoyu.vo.UserInfo" lazy-init="true" id="m">
<constructor-arg>
<map>
<entry key="小名" value="1200"></entry>
<entry key-ref="x" value-ref="z"></entry>
</map>
</constructor-arg>
</bean>
<!-- properties -->
<bean class="club.shaoyu.vo.UserInfo" id="p" lazy-init="true">
<constructor-arg>
<props>
<prop key="url">mysql://49.232.163.112:3306/mail</prop>
<prop key="driver">jdbc</prop>
<prop key="userName">root</prop>
</props>
</constructor-arg>
</bean>
</beans>
Test.java
package club.shaoyu.test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import club.shaoyu.vo.UserInfo;
public class Test {
public static void main(String[] args) {
ClassPathXmlApplicationContext applicationContext=new ClassPathXmlApplicationContext("app.xml");
UserInfo userInfo =applicationContext.getBean("m",UserInfo.class);
applicationContext.close();
}
}
UserInfo.java
package club.shaoyu.vo;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
public class UserInfo {
public UserInfo(String name ,int age) {
System.out.println(name+","+age);
}
public UserInfo(Date date) {
System.out.println(date);
}
public UserInfo (String [] mobiles) {
for (String mobile : mobiles) {
System.out.println(mobile);
}
}
public UserInfo(List<Double> profit) {
for (Double double1 : profit) {
System.out.println(double1);
}
}
public UserInfo(Set<Date> dates) {
for (Date date : dates) {
System.out.println(date);
}
}
public UserInfo(Map<String,Double> money) {
for (String name : money.keySet()) {
System.out.println(name+","+money.get(name));
}
}
public UserInfo(Properties properties) {
System.out.println(properties.getProperty("url"));
System.out.println(properties.get("driver"));
System.out.println(properties.get("userName"));
}
}
测试方式:在Test.java中UserInfo userInfo =applicationContext.getBean(id,UserInfo.class);id处放置在app.xml 中的bean的id,可测试相关属性
总结:
(1)再传入String类型和基本属性时:可通过Bean或是value
(2)在传入自定义类型时:需要在<constructor-arg></constructor-arg>中输入相应的bean标签,或者是使用ref标签中的bean属性=“id/name”
(3)在传入List,Set集合时,需要在<constructor-arg></constructor-arg>中输入相应的<set>,<list>标签
(4)在传入List,Set集合时,需要在<constructor-arg></constructor-arg>中输入<map><entry>其中entry标签中有属性key ,value ,key-ref,value-ref用法和(1)、(2)相同
(5)在传入properties属性时,需要<constructor-arg></constructor-arg>中输入<props><prop>标签-->其中key,并且可以在标签中输入想要的properties值