Spring基础:IoC容器(2)

[size=x-large][b]容器注入类型[/b][/size]

最常见的注入类型是字面值注入,像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]
|特殊符号|转义序列
|<|<
|>|>
|&|&
|"|"
|'|&apos;
[/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中键和值的类型。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值