[size=x-large][b]容器注入类型[/b][/size]
最常见的注入类型是字面值注入,像String和基本类型的包装类在Spring中都是有[color=red]属性编辑器[/color]帮助注入的。另外还有对象的注入,集合类的注入。
1.字面值
所谓字面值,一般是指可用字符串表示的值,这些值可以通过<value>元素标签进行注入。在默认情况下,基本数据类型及其封装类,String等类型都可以采取字面值注入的方式。
[color=red]****在XML中表示"<",">","&","""(双引号),"'"(单引号)这些的时候,要么使用<![CDATA[]]>包起来,要么使用转义序列。[/color]
[table]
|特殊符号|转义序列
|<|<
|>|>
|&|&
|"|"
|'|'
[/table]
2.引用其他Bean
<ref>元素可以通过以下三个属性引用容器中其他Bean。
[list]
[*]bean:引用同一容器或父容器的Bean。
[*]local:只能引用同一配置文件中的Bean。
[*]parent:引用父容器中的Bean。
[/list]
3.引用内部Bean
4.引用null值
如果确实要引入null值的话,需要使用标签<null/>
5.集合类型
主要有List,Set,Map,Props
[color=red]****如果属性为Set类型,可以在配置文件中yong<set>替换掉<list>,泛型的集合类会判断注入类型,自动进行类型转换。[/color]
6.集合合并
这一块暂时跳过不写。
7.注入集合类型的Bean
如果希望注入集合类型的Bean,而不是集合类型的属性,则需要通过util命名空间进行配置。比如声明了集合类型的Bean之后,可以在属性中直接引用,不用采用上面的内部Bean的配置方式了。
引入命名空间xmlns:util="http://www.springframework.org/schema/util"
此外<util:list><util:set>还支持value-type,用于指定集合中元素的类型。<util:map>还支持key-type和value-type,指定Map中键和值的类型。
最常见的注入类型是字面值注入,像String和基本类型的包装类在Spring中都是有[color=red]属性编辑器[/color]帮助注入的。另外还有对象的注入,集合类的注入。
1.字面值
所谓字面值,一般是指可用字符串表示的值,这些值可以通过<value>元素标签进行注入。在默认情况下,基本数据类型及其封装类,String等类型都可以采取字面值注入的方式。
<bean id="car" class="com.firethewhole.maventest06.attr.Car">
<property name="maxSpeed">
<value>200</value>
</property>
<property name="brand">
<value><![CDATA[红旗&CA72]]></value>
</property>
<property name="price">
<value>2000.00</value>
</property>
</bean>
[color=red]****在XML中表示"<",">","&","""(双引号),"'"(单引号)这些的时候,要么使用<![CDATA[]]>包起来,要么使用转义序列。[/color]
[table]
|特殊符号|转义序列
|<|<
|>|>
|&|&
|"|"
|'|'
[/table]
2.引用其他Bean
<bean id="boss" class="com.firethewhole.maventest06.attr.Boss">
<property name="car">
<ref bean="car"/>
</property>
</bean>
<ref>元素可以通过以下三个属性引用容器中其他Bean。
[list]
[*]bean:引用同一容器或父容器的Bean。
[*]local:只能引用同一配置文件中的Bean。
[*]parent:引用父容器中的Bean。
[/list]
<?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 spring-beans-4.1.xsd">
<bean id="car" class="com.firethewhole.maventest06.attr.Car">
<property name="brand" value="吉利CT5" />
<property name="maxSpeed" value="100" />
<property name="price" value="1000.00" />
</bean>
<bean id="boss2" class="com.firethewhole.maventest06.attr.Boss">
<property name="car">
<ref parent="car"/>
</property>
</bean>
</beans>
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans1.xml");
ApplicationContext child = new ClassPathXmlApplicationContext(new String[] { "beans2.xml" }, ctx);
Boss boss2 = (Boss) child.getBean("boss2");
boss2.introduce();
3.引用内部Bean
<bean id="boss3" class="com.firethewhole.maventest06.attr.Boss">
<property name="car">
<bean class="com.firethewhole.maventest06.attr.Car">
<property name="maxSpeed" value="300"/>
<property name="brand" value="雷克萨斯"/>
<property name="price" value="90000.00"/>
</bean>
</property>
</bean>
4.引用null值
如果确实要引入null值的话,需要使用标签<null/>
5.集合类型
主要有List,Set,Map,Props
<bean id="boss4" class="com.firethewhole.maventest06.attr.AnotherBoss">
<property name="favorites">
<list>
<value>看报</value>
<value>赛车</value>
<value>高尔夫</value>
</list>
</property>
<property name="jobs">
<map>
<entry>
<key><value>AM</value></key>
<value>会见客户</value>
</entry>
<entry>
<key><value>PM</value></key>
<value>公司内部会议</value>
</entry>
</map>
</property>
<property name="mails">
<props>
<prop key="jobMail">john-office@baobaotao.com</prop>
<prop key="lifeMail">john-life@baobaotao.com</prop>
</props>
</property>
<property name="jobTimes">
<map>
<entry>
<key><value>会见客户</value></key>
<value>124</value>
</entry>
</map>
</property>
</bean>
[color=red]****如果属性为Set类型,可以在配置文件中yong<set>替换掉<list>,泛型的集合类会判断注入类型,自动进行类型转换。[/color]
6.集合合并
这一块暂时跳过不写。
7.注入集合类型的Bean
如果希望注入集合类型的Bean,而不是集合类型的属性,则需要通过util命名空间进行配置。比如声明了集合类型的Bean之后,可以在属性中直接引用,不用采用上面的内部Bean的配置方式了。
引入命名空间xmlns:util="http://www.springframework.org/schema/util"
<util:list id="favoritieList" list-class="java.util.LinkedList">
<value>看报</value>个
<value>赛车</value>
<value>高尔夫</value>
</util:list>
<util:set id="favoriteSet">
<value>看报</value>
<value>赛车</value>
<value>高尔夫</value>
</util:set>
<util:map id="emailMap">
<entry key="AM" value="会见客户"/>
<entry key="PM" value="公司内部会议"/>
</util:map>
此外<util:list><util:set>还支持value-type,用于指定集合中元素的类型。<util:map>还支持key-type和value-type,指定Map中键和值的类型。