03-spring学习-属性配置细节
2017-11-19 16:46
387 查看
配置bean的一些细节
字面值
![](https://images2017.cnblogs.com/blog/779030/201711/779030-20171119135116577-1923935929.png)
如果包含特殊符号,直接写会报错。可以用这个<![CDATA[]]>包裹起来。
比如这里的配置属性里面的value值包含<>等特殊符号,直接写会报错。可以用这个<![CDATA[]]>包裹起来。
<bean id="car2" class="com.spring.beans.Car" > <constructor-arg value="Audi" index="0" type="java.lang.String"></constructor-arg> <constructor-arg index="1" type="java.lang.String"> <value><![CDATA[<shanghai^>]]></value> </constructor-arg> <constructor-arg type="double"> <value>250</value> </constructor-arg> </bean>
引用其他bean
![](https://images2017.cnblogs.com/blog/779030/201711/779030-20171119144417015-1675087410.png)
可以使用<ref>元素或者property的ref属性,建立bean之间的引用关系
比如这里有个person类,里面有个属性是Car类。在配置bean的时候,需要给car属性赋值,这时候可以使用ref属性。
person类:
package com.spring.beans; public class Person { private String name; private int age; private Car car; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Car getCar() { return car; } public void setCar(Car car) { this.car = car; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + ", car=" + car + "]"; } }
配置:可以使用property的ref属性,建立bean之间的引用关系
<!-- 如果包含特殊符号,直接写会报错。可以用这个<![CDATA[]]>包裹起来 --> <bean id="car2" class="com.spring.beans.Car" > <constructor-arg value="Audi" index="0" type="java.lang.String"></constructor-arg> <constructor-arg index="1" type="java.lang.String"> <value><![CDATA[<shanghai^>]]></value> </constructor-arg> <constructor-arg type="double"> <value>250</value> </constructor-arg> </bean> <bean id="person" class="com.spring.beans.Person"> <property name="name" value="Tom"></property> <property name="age" value="24"></property> <!-- 可以使用property的ref属性,建立bean之间的引用关系 --> <property name="car" ref="car2"></property> </bean>
或者使用<ref>元素配置:
<bean id="person" class="com.spring.beans.Person"> <property name="name" value="Tom"></property> <property name="age" value="24"></property> <!-- 可以使用property的ref属性,建立bean之间的引用关系 --> <!-- <property name="car" ref="car2"></property> --> <property name="car"> <ref bean="car2"></ref> </property> </bean>
使用这个person类。
Car car=(Car) ctx.getBean("car"); Car car2=(Car) ctx.getBean("car2"); System.out.println(car); System.out.println(car2); Person person=(Person) ctx.getBean("person"); System.out.println(person);
运行结果:
![](https://images2017.cnblogs.com/blog/779030/201711/779030-20171119143524546-1709443019.png)
也可以在属性或者构造器中包含Bean的声明,这样的bean称为内部bean。
<bean id="person" class="com.spring.beans.Person"> <property name="name" value="Tom"></property> <property name="age" value="24"></property> <property name="car"> <bean class="com.spring.beans.Car"> <constructor-arg value="Ford"></constructor-arg> <constructor-arg value="changan"></constructor-arg> <constructor-arg value="200" type="double"></constructor-arg> </bean> </property> </bean>
![](https://images2017.cnblogs.com/blog/779030/201711/779030-20171119144822171-1422207457.png)
比如注入null值:
![](https://images2017.cnblogs.com/blog/779030/201711/779030-20171119144908874-94553067.png)
为级联属性赋值:
![](https://images2017.cnblogs.com/blog/779030/201711/779030-20171119152851265-592504946.png)
集合属性
使用list节点为list类型的属性赋值
![](https://images2017.cnblogs.com/blog/779030/201711/779030-20171119152911890-1035240126.png)
这里拿<list>来做例子:
例如:
package com.spring.beans.collections; import java.util.List; import com.spring.beans.Car; public class Person { private String name; private int age; private List<Car> cars; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public List<Car> getCars() { return cars; } public void setCars(List<Car> cars) { this.cars = cars; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + ", car=" + cars + "]"; } }
配置:
<!-- 测试集合属性 --> <bean id="person3" class="com.spring.beans.collections.Person"> <property name="name" value="mike"></property> <property name="age" value="27"></property> <!-- 使用list节点为list类型的属性赋值 --> <property name="cars"> <list> <ref bean="car"></ref> <ref bean="car2"></ref> </list> </property> </bean>
运行:
![](https://images2017.cnblogs.com/blog/779030/201711/779030-20171119154248687-1245064249.png)
set集合的使用跟list集合差不多类似;
Map集合的使用如下:
![](https://images2017.cnblogs.com/blog/779030/201711/779030-20171119154726702-709487277.png)
新建一个newPerson类:
package com.spring.beans.collections; import java.util.Map; import com.spring.beans.Car; public class NewPerson { private String name; private int age; private Map<String,Car> cars; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Map<String,Car> getCars() { return cars; } public void setCars(Map<String,Car> cars) { this.cars = cars; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + ", car=" + cars + "]"; } }
配置:
<!-- 测试Map集合属性 --> <bean id="person3" class="com.spring.beans.collections.NewPerson"> <property name="name" value="rose"></property> <property name="age" value="28"></property> <property name="cars"> <map> <entry key="AA" value-ref="car"></entry> <entry key="BB" value-ref="car2"></entry> </map> </property> </bean>
配置properties属性值
使用props 和 prop 为属性 properties 赋值package com.spring.beans.collections; import java.util.Properties; public class DataSource { private Properties properties; public Properties getProperties() { return properties; } public void setProperties(Properties properties) { this.properties = properties; } @Override public String toString() { return "DataSource [properties=" + properties + "]"; } }
配置:
<!-- 配置properties属性值 --> <bean id="dataSource" class="com.spring.beans.collections.DataSource"> <!-- 使用props 和 prop 为属性 properties 赋值 --> <property name="properties"> <props> <prop key="user">root</prop> <prop key="password">911581</prop> <prop key="jdbcurl">jdbc:mysql:///sys</prop> <prop key="driverClass">com.mysql.jdbc.Driver</prop> </props> </property> </bean>
运行结果:
![](https://images2017.cnblogs.com/blog/779030/201711/779030-20171119160710156-424107023.png)
配置单例的集合bean
配置单例的集合bean,以供多个bean使用,需要导入util命名空间。为了导入util命名空间,需要到这里勾选上util。
![](https://images2017.cnblogs.com/blog/779030/201711/779030-20171119161957624-941497839.png)
然后配置如下:
以list集合的集合bean为例:
<!-- 配置单例的集合bean,以供多个bean进行引用,需要导入util命名空间 --> <util:list id="cars5"> <ref bean="car1"></ref> <ref bean="car2"></ref> </util:list>
对于其他类型的集合,直接把list换成对应的集合类型名就行,然后util里面的内容按照上面的集合配置即可。
使用直接用ref即可:
<bean id="person4" class="com.spring.beans.collections.NewPerson"> <property name="name" value="rose"></property> <property name="age" value="28"></property> <property name="cars" ref="car5"></property> </bean>
通过p命名空间为bean属性赋值
通过p命名空间为bean的属性赋值 ,需要先导入p命名空间,相对于传统的配置方式更简洁。首先导入p命名空间
![](https://images2017.cnblogs.com/blog/779030/201711/779030-20171119162902531-422344265.png)
配置bean:
<!-- 通过p命名空间为bean的属性赋值 ,需要先导入p命名空间--> <bean id="person5" class="com.spring.beans.collections.Person" p:age="30" p:name="张三丰" p:cars-ref="cars" ></bean>
注意:
1,为普通属性赋值的写法:p:属性名=“值”;
2,赋值的属性需要通过引用其他bean的,比如上面的p:cars-ref,这种引用其他bean的,写法是:赋值的属性-ref。
---恢复内容结束---
相关文章推荐
- Spring学习笔记之属性配置细节
- Spring 学习笔记 4. 尚硅谷_佟刚_Spring_属性配置细节
- Spring4 学习笔记(4)-Spring 属性配置的一些细节
- [原创]java WEB学习笔记98:Spring学习---Spring Bean配置及相关细节:如何在配置bean,Spring容器(BeanFactory,ApplicationContext),如何获取bean,属性赋值(属性注入,构造器注入),配置bean细节(字面值,包含特殊字符,引用bean,null值,集合属性list map propert),util 和p 命名空间
- spring学习总结(四):IOC & DI 配置 Bean 之注入属性细节
- Spring框架学习(3):spring属性配置的细节
- spring boot 学习笔记(二):项目属性配置
- 2017/12/24 Spring属性配置细节(下)
- Spring基础学习教程(Spring配置文件详解)-03
- Spring入门学习——bean属性配置(一)
- SpringBoot内部配置:“application.properties配置”和”使用XML配置”,读取属性文件中的内容,日志配置,Profile配置(学习:SpringBoot实战)
- 4.Spring学习笔记_属性配置细节(by尚硅谷_佟刚)
- Spring学习03 基于注解配置Bean
- Spring-3:bean的属性配置细节
- 【Spring学习08】依赖配置:复合属性
- (四) spring属性配置细节
- Spring入门学习——bean属性配置(二)
- spring学习笔记(3)——bean配置细节注意
- Spring_属性配置细节
- Spring Boot学习笔记-项目属性的简单配置