Spring 属性配置细节
1.属性配置中 有特殊字符的处理 使用<![CDATA[]]>
<!-- 通过构造器方式 第二种方式 type 指定顺序 -->
<bean id="car2" class="xyz.yangjian.spring.demo.Car">
<constructor-arg value="大车" type="java.lang.String"/>
<!-- <constructor-arg value="普拉多" type ="java.lang.String"/> -->
<constructor-arg>
<value><![CDATA[<普拉多~>]]></value>
</constructor-arg>
<constructor-arg value="2000" type ="double"/>
</bean>
2.属性配置中 给值null 使用 <null/>
<!-- bean引用 构造器注入 -->
<bean id="person2" class="xyz.yangjian.spring.demo.Person">
<constructor-arg value="Jerry"></constructor-arg>
<constructor-arg value="25"></constructor-arg>
<!-- null值 -->
<!-- <constructor-arg><null/></constructor-arg> -->
</bean>
3.级联属性赋值 car.price 注意的是 car 必须先初始化 并且Car类中 必须对属性设置set方法 否则报错
<!-- bean引用 构造器注入 -->
<bean id="person2" class="xyz.yangjian.spring.demo.Person">
<constructor-arg value="Jerry"></constructor-arg>
<constructor-arg value="25"></constructor-arg>
<constructor-arg ref="car1"></constructor-arg>
<!-- 为级联属性赋值 注意必须先引入 car对象 才能进行赋值 -->
<property name="car.price" value="5000000"></property>
</bean>
4.List 集合属性赋值 创建Person类 创建cars 集合属性 private List<Car> cars;
<!-- bean List 集合 -->
<bean id="person3" class="xyz.yangjian.spring.demo.collections.Person">
<property name="name" value="Mike"></property>
<property name="age" value="30"></property>
<property name="cars">
<list>
<ref bean="car1"/>
<ref bean="car2"/>
<!--内部引用 外部无法访问 -->
<bean class="xyz.yangjian.spring.demo.Car">
<constructor-arg value="福特"></constructor-arg>
<constructor-arg value="长安"></constructor-arg>
<constructor-arg value="100000" type="double"></constructor-arg>
</bean>
</list>
</property>
</bean>
5.map 属性赋值 创建NewPerson类 创建cars Map 属性 private Map<String,Car> cars;
<!-- 使用 map 属性值 -->
<bean id="person4" class="xyz.yangjian.spring.demo.collections.NewPerson">
<property name="name" value="ChunLing"></property>
<property name="age" value="25"></property>
<property name="cars">
<map>
<entry key="AA" value-ref="car1"></entry>
<entry key="BB" value-ref="car2"></entry>
<!--内部引用 外部无法访问 -->
<entry key="CC">
<bean class="xyz.yangjian.spring.demo.Car">
<constructor-arg value="福特"></constructor-arg>
<constructor-arg value="长安"></constructor-arg>
<constructor-arg value="100000" type="double"></constructor-arg>
</bean>
</entry>
</map>
</property>
</bean>
6.配置propertise 属性值 创建 DataSource类 模仿数据库属性赋值 创建 private Properties properties;
<!-- 配置propertise 属性值 -->
<bean id ="dataSource" class="xyz.yangjian.spring.demo.collections.DataSource">
<property name="properties">
<props>
<prop key="driverClass">com.mysql.jdbc.driver</prop>
<prop key="url">jdbc:mysql///test</prop>
<prop key="user">root</prop>
<prop key="password">123456</prop>
</props>
</property>
</bean>
7.配置单例的集合bean 以供多个bean 进行引用 需要引入util 命名空间
<!-- 配置单例的集合bean 以供多个bean 进行引用 需要引入util 命名空间-->
<util:list id="cars">
<ref bean="car1"/>
<ref bean="car2"/>
</util:list>
<bean id="person5" class="xyz.yangjian.spring.demo.collections.Person">
<property name="name" value="Jack"></property>
<property name="age" value="29"></property>
<property name="cars" ref="cars"></property>
</bean>
8.配置p 命名空间属性 直接通过p: 给属性赋值
<!-- 配置p 命名空间属性 -->
<bean id="person6" class="xyz.yangjian.spring.demo.collections.Person" p:age="35"
p:name="queen" p:cars-ref="cars">
</bean>
9.测试结果
//创建IOC容器
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationcontext.xml");
Person person3 = (Person) ac.getBean("person3");
System.err.println(person3.toString());
NewPerson person4 = (NewPerson) ac.getBean("person4");
System.err.println(person4.toString());
Person person5 = (Person) ac.getBean("person5");
System.err.println(person5.toString());
Person person6 = (Person) ac.getBean("person6");
System.err.println(person6.toString());
DataSource dataSource = ac.getBean(DataSource.class);
System.out.println(dataSource);
Person [name=Mike, age=30, cars=[Car [name=小车, brand=奔驰, size=5, price=5000000.0], Car [name=大车, brand=<普拉多~>, size=0, price=2000.0], Car [name=福特, brand=长安, size=0, price=100000.0]]]
Person [name=ChunLing, age=25, cars={AA=Car [name=小车, brand=奔驰, size=5, price=5000000.0], BB=Car [name=大车, brand=<普拉多~>, size=0, price=2000.0], CC=Car [name=福特, brand=长安, size=0, price=100000.0]}]
Person [name=Jack, age=29, cars=[Car [name=小车, brand=奔驰, size=5, price=5000000.0], Car [name=大车, brand=<普拉多~>, size=0, price=2000.0]]]
Person [name=queen, age=35, cars=[Car [name=小车, brand=奔驰, size=5, price=5000000.0], Car [name=大车, brand=<普拉多~>, size=0, price=2000.0]]]
DataSource [properties={driverClass=com.mysql.jdbc.driver, user=root, url=jdbc:mysql///test, password=123456}]
10 下一节学习自动装配属性
未完待更~~