Spring容器中的Bean

一,配置合作者的Bean

Bean设置的属性值是容器中的另一个Bean实力,使用<ref.../>元素,可制定一个bean属性,该属性用于指定容器中其他Bean实例的id属性

1 <bean id="steelAxe" class="org.com.service.impl.SteelAxe"></bean>
2      <bean id="chinese" class="org.com.service.impl.Chinese">
3      <property name="axe">
4      <!-- 指定使用个容器中的id为steelAxe的Bean作为调用setAxe()方法的参数 -->
5      <ref bean="steelAxe"/>
6      </property>
7      </bean>
View Code

也可以简写成

1 <bean id="steelAxe" class="org.com.service.impl.SteelAxe"></bean>
2      <bean id="chinese" class="org.com.service.impl.Chinese">
3      <!-- 指定使用个容器中的id为steelAxe的Bean作为调用setAxe()方法的参数 -->
4      <property name="axe" ref="steelAxe"/>
5      </bean>
View Code

二,使用自动装配注入合作者的Bean

1,自动装配可以通<beans.../>的default-autowire指定,该元素对所有的<bean.../>起作用

2,也可以通过<bean>的autowire指定

default-autowire,autowire可接受如下属性值

no:默认此

byName

1  <!-- 指定使用byName,根据setter的方法名与Bean的id进行匹配 -->
2      <bean id="chinese" class="org.com.service.impl.Chinese" autowire="byName">
3       </bean>
4       <bean id="gunDog" class="org.com.service.impl.GunDog">
5       <property name="name" value="wanggang"></property>
6       </bean>
View Code

setter方法名为setGunDog(),spring容器会找id为gunDog的Bean,若找到了,该Bean就会调用setGunDog方法的参数

1     public void setGunDog(Dog dog){
2             this.dog=dog;
3         }
4     
View Code

byType:根据参数类型,进行匹配,不多做例子,估计用不到

三,注入集合值

使用集合元素标签<list../><set../><map../><props../>

 1 <?xml version="1.0" encoding="UTF-8"?>  
 2 <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
 3     xmlns="http://www.springframework.org/schema/beans"  
 4     xsi:schemaLocation="http://www.springframework.org/schema/beans  
 5     http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">  
 6     <!-- 资源国际化 -->  
 7      <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
 8      <!-- 驱动spring调用messageSource Bean的setBasenames()的方法,改方法需要一个参数组 -->
 9      <property name="basenames">
10      <list>
11      <value>message</value>
12      <!-- 如果有多个资源文件,全部列在这儿 -->
13      </list>
14      </property>     
15      </bean>
16      <bean id="steelAxe" class="org.com.service.impl.SteelAxe"></bean>
17      <bean id="chinese" class="org.com.service.impl.Chinese">
18      <property name="axe">
19      <!-- 指定使用个容器中的id为steelAxe的Bean作为调用setAxe()方法的参数 -->
20      <ref bean="steelAxe"/>
21      </property>
22      </bean>
23      
24      <bean id="steelAxe" class="org.com.service.impl.SteelAxe"></bean>
25      <bean id="chinese" class="org.com.service.impl.Chinese">
26      <!-- 指定使用个容器中的id为steelAxe的Bean作为调用setAxe()方法的参数 -->
27      <property name="axe" ref="steelAxe"/>
28      </bean>
29      
30      <!-- 指定使用byName,根据setter的方法名与Bean的id进行匹配 -->
31      <bean id="chinese" class="org.com.service.impl.Chinese" autowire="byName">
32       </bean>
33       <bean id="gunDog" class="org.com.service.impl.GunDog">
34       <property name="name" value="wanggang"></property>
35       </bean>
36       
37       <bean id="chinese" class="org.com.service.impl.Chinese">
38       <!-- 为调用setSchools()方法配置List集合作为参数值 和数组一样 -->
39       <property name="schools">
40       <list>
41       <!-- 每个value,ref,bean..都配置一个List元素 -->
42       <value>小学</value>
43       <value>中学</value>
44       <value>大学</value>
45       </list>
46       </property>
47       <property name="scores">
48       <!-- 为调用setScores()方法配置Map集合作为参数值 -->
49       <map>
50       <entry key="语文" value="80"/>
51       <entry key="数学" value="80"/>
52       <entry key="外语" value="80"/>
53       </map>
54       </property>
55       </bean>
56 </beans> 
View Code

四,组合属性
除了最后一个属性可以为NULL,其他都不行

<bean id="" class="">

<property name="person.name" value="zhangliang"/>相当于执行getPerson().setName(String name);

</bean>

 

posted @ 2015-08-05 13:40  公众号java-codestack  阅读(271)  评论(0编辑  收藏  举报