配置Bean
基本配置
<bean id="hello" class="chen.HelloWorld"></bean>
- class:bean的全類名驮配,通過反射方式在ioc容器中創(chuàng)建bean的實(shí)例
- id:標(biāo)識(shí)容器中的bean id唯一
配置屬性值的兩種方式:
1 通過property標(biāo)簽為bean實(shí)例賦值(set方法)
<bean id="hello" class="chen.HelloWorld">
<property name="name" value="Spring"></property>
</bean>
這種賦值方式是spring容器通過實(shí)例的set方法為屬性賦值
2 通過constructor-arg標(biāo)簽為bean實(shí)例賦值(構(gòu)造器配置屬性)
<bean id="zhansan" class="chen.Person">
<constructor-arg value="張三" ></constructor-arg>
<constructor-arg value="24" ></constructor-arg>
</bean>
- constructor-arg是構(gòu)造器的參數(shù)順序 通過指定 type 屬性來區(qū)分重載構(gòu)造器
<bean id="lishia" class="chen.Person">
<constructor-arg value="1" type="int"></constructor-arg>
<constructor-arg value="2" type="int"></constructor-arg>
</bean>
- 也可以使用constructor-arg節(jié)點(diǎn)下的value子節(jié)點(diǎn)來表示 這樣和上面是等價(jià)的寫法
<bean id="lishib" class="chen.Person">
<constructor-arg value="1" type="int"></constructor-arg>
<constructor-arg type="int">
<value>2</value>
</constructor-arg>
</bean>
- 如果字面值包涵特殊字符可以使用 <![CDATA[值]]> 包裹
bean引用兩種方式:
1 使用ref 指向引用bean
<bean id="car" class="chen.Car">
<property name="brand" value="寶馬"></property>
<property name="price" value="100000000"></property>
</bean>
<!-- 使用ref 指向引用bean 在Person類有Car類型的屬性值-->
<bean id="wu" class="chen.Person">
<constructor-arg value="王五" ></constructor-arg>
<constructor-arg value="24" ></constructor-arg>
<property name="car" ref="car"></property>
</bean>
2 使用內(nèi)部bean 注意 :內(nèi)部bean無法在外部引用
<bean id="zs" class="chen.Person">
<constructor-arg value="豬三" ></constructor-arg>
<constructor-arg value="25" ></constructor-arg>
<property name="car" >
<bean class="chen.Car">
<property name="brand" value="奔馳"></property>
<property name="price" value="100000000"></property>
</bean>
</property>
</bean>
使用<null/>賦值為null 意義不大
<bean id="px" class="chen.Person">
<constructor-arg value="潘小" ></constructor-arg>
<constructor-arg value="25" ></constructor-arg>
<property name="car"><null/></property>
</bean>
級(jí)聯(lián)屬性 注意:要先創(chuàng)建級(jí)聯(lián)屬性 然后在賦值
<bean id="car" class="chen.Car">
<property name="brand" value="寶馬"></property>
<property name="price" value="100000000"></property>
</bean>
<bean id="hx" class="chen.Person">
<constructor-arg value="何小" ></constructor-arg>
<constructor-arg value="25" ></constructor-arg>
<property name="car" ref="car"></property>
<property name="car.brand" value="我換成法拉利"></property>
</bean>
集合屬性賦值
- 用list標(biāo)簽中的 ref(引用外不bean) bean (內(nèi)部bean)value(基本類型或String)子標(biāo)簽 來為list類型賦值
截取代碼:
<!--phones屬性是一個(gè)集合對(duì)象 -->
<property name="phones">
<!-- 用list標(biāo)簽中的 ref bean value子標(biāo)簽 來為list類型賦值-->
<list>
<!--phones屬性是一個(gè)集合對(duì)象 -->
<ref bean="pg"/>
<ref bean="xm"/>
</list>
</property>
- 用map標(biāo)簽中的 entry子標(biāo)簽的key value(基本類型或String)或value-ref()(bean) 來為map類型賦值
<property name="phones">
<!-- 用map標(biāo)簽中的 entry子標(biāo)簽的key value或value-ref 來為map類型賦值-->
<map>
<entry key="a" value="444"></entry>
<entry key="a" value-ref="xm"></entry>
</map>
</property>
- 用props標(biāo)簽中的 prop子標(biāo)簽 來為Properties類型賦值
<property name="XXXX">
<!-- 用props標(biāo)簽中的 prop子標(biāo)簽 來為Properties類型賦值-->
<props>
<prop key="a">值1</prop>
<prop key="b">值2</prop>
</props>
</property>
配置獨(dú)立集合bean 需要導(dǎo)入util命名空間 util:list util:map..等獨(dú)立出來
<util:list id="list">
<ref bean="pg"/>
<ref bean="xm"/>
</util:list>
一些數(shù)據(jù)集合會(huì)被多個(gè)bean所引用時(shí)可以使用
通過p命名空間為bean的屬性賦值博烂,需要導(dǎo)入p命名空間
<bean id="hw" class="chen.phone" p:brand="華為" p:price="50000"></bean>
這樣配置會(huì)很簡單
總結(jié):
property標(biāo)簽 和 constructor-arg標(biāo)簽 除了constructor-arg name屬性 其他的配置方式基本一樣
下一篇 spring學(xué)習(xí)4