国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Spring配置bean的詳細知識

2019-11-14 21:47:14
字體:
來源:轉載
供稿:網友
SPRing配置bean的詳細知識

在Spring中配置bean的一些細節。具體信息請參考下面的代碼及注釋

applicationContext.xml文件

  1 <?xml version="1.0" encoding="UTF-8"?>  2 <beans xmlns="http://www.springframework.org/schema/beans"  3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  4     xmlns:util="http://www.springframework.org/schema/util"  5     xmlns:p="http://www.springframework.org/schema/p"  6     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  7         http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.1.xsd">  8   9     <!-- 配置bean  10         class:bean的全類名,通過反射的方式在IOC容器中創建Bean,所以要求Bean中必須有無參數的構造器 11         id:標識容器中的bean,id唯一。 12     --> 13     <bean id="helloSpring" class="com.yl.HelloSpring"> 14         <property name="name" value="Spring"></property> 15     </bean> 16     <!-- 使用構造器注入屬性值可以指定參數的位置和參數的類型,以區分重載的構造器 --> 17     <bean id="car" class="com.yl.Car"> 18         <constructor-arg value="Audi" index="0"></constructor-arg> 19         <constructor-arg value="Shanghai" index="1"></constructor-arg> 20         <constructor-arg value="300000" type="double"></constructor-arg> 21     </bean> 22      23     <bean id="car2" class="com.yl.Car"> 24         <constructor-arg value="BMW" type="java.lang.String"></constructor-arg> 25         <!-- 如果字面值包含特殊字符,可以使用<![CDATA[]]> 包裹起來--> 26         <!-- 屬性值還可以使用value子節點進行配置 --> 27         <constructor-arg type="java.lang.String"> 28             <value><![CDATA[<ShangHai~>]]></value> 29         </constructor-arg> 30         <constructor-arg value="200" type="int"></constructor-arg> 31     </bean> 32      33      34     <bean id="person" class="com.yl.Person"> 35         <property name="name" value="Tom"></property> 36         <property name="age" value="24"></property> 37         <!-- 可以使用property的ref屬性建立bean之間的引用關系 --> 38         <!-- <property name="car" ref="car2"></property> --> 39         <!-- <property name="car"> 40             <ref bean="car2"/> 41         </property> --> 42         <!-- 內部Bean,不能被外部引用,只能在內部使用  --> 43         <property name="car"> 44             <bean class="com.yl.Car"> 45                 <constructor-arg value="Ford"></constructor-arg> 46                 <constructor-arg value="BeiJing"></constructor-arg> 47                 <constructor-arg value="100000"></constructor-arg> 48             </bean> 49         </property> 50     </bean> 51      52      53     <bean id="person2" class="com.yl.Person"> 54         <constructor-arg value="Jerry"></constructor-arg> 55         <constructor-arg value="25"></constructor-arg> 56         <!-- <constructor-arg ref="car"></constructor-arg> --> 57         <!-- 測試null值 --> 58         <!-- <constructor-arg><null/></constructor-arg> --> 59         <!-- 為級聯屬性賦值。注意:屬性需要先初始化后才可以為級聯屬性賦值,否則會有異常 --> 60         <constructor-arg ref="car"></constructor-arg> 61         <property name="car.speed" value="260"></property> 62     </bean> 63      64      65     <!-- 測試集合屬性 --> 66     <bean id="person3" class="com.yl.collections.Person"> 67         <property name="name" value="Mike"></property> 68         <property name="age" value="30"></property> 69         <property name="cars"> 70             <!-- 使用list節點為List類型的屬性賦值 --> 71             <list> 72                 <ref bean="car"/> 73                 <ref bean="car2"/> 74                 <bean class="com.yl.Car"> 75                     <constructor-arg value="Ford"></constructor-arg> 76                     <constructor-arg value="BeiJing"></constructor-arg> 77                     <constructor-arg value="100000"></constructor-arg> 78                 </bean> 79             </list> 80         </property> 81     </bean> 82      83     <!-- 配置Map屬性值 --> 84     <bean id="newPerson" class="com.yl.collections.NewPerson"> 85         <property name="name" value="Rose"></property> 86         <property name="age" value="24"></property> 87         <property name="cars"> 88             <!-- 使用map節點機map的entry子節點配置Map類型的成員變量 --> 89             <map> 90                 <entry key="AA" value-ref="car"></entry> 91                 <entry key="BB" value-ref="car2"></entry> 92             </map> 93         </property> 94     </bean> 95      96     <!-- 配置Properties屬性值 --> 97     <bean id="dataSource" class="com.yl.collections.DataSource"> 98         <property name="properties"> 99             <!-- 使用props和prop子節點來為Properties屬性賦值 -->100             <props>101                 <prop key="user">root</prop>102                 <prop key="passWord">1234</prop>103                 <prop key="jdbcUrl">jdbc:MySQL:///test</prop>104                 <prop key="driverClass">com.mysql.jdbc.Driver</prop>105             </props>106         </property>107     </bean>108     109     <!-- 配置單例的集合bean,以供多個bean進行引用.需要導入util命名空間 -->110     <util:list id="cars">111         <ref bean="car"/>112         <ref bean="car2"/>113     </util:list>114     115     <bean id="person4" class="com.yl.collections.Person">116         <property name="name" value="Jack"></property>117         <property name="age" value="25"></property>118         <property name="cars" ref="cars"></property>119     </bean>120     121     <!-- 通過p命名空間為bean的屬性賦值,需要先導入p命名空間,相對于傳統的方式,更加簡潔 -->122     <bean id="person5" class="com.yl.collections.Person" p:name="Queen" p:age="27" p:cars-ref="cars"></bean>123     124     125     126     127     128     129 </beans>

 

Spring自動裝配beanSpring IOC容器可以自動裝配bean,需要做的僅僅是在<bean>的autowire屬性里指定裝配的模式byType:根據類型自動裝配,若IOC容器中有多個與目標類型一致的bean,在這種情況下,Spring將無法判定哪個bean最合適該屬性,所以不能執行byName:根據名稱自動裝配,必須將目標bean的名稱和屬性名設置的完全相同constructor:通過構造器自動裝配,當bean中存在多個構造器時,此種自動裝配方式將會很復雜。不推薦使用。具體信息參考下面的文件及注釋

beans.xml文件

 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4     xmlns:p="http://www.springframework.org/schema/p" 5     xmlns:util="http://www.springframework.org/schema/util" 6     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 7         http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.1.xsd"> 8      9     <bean id="address" class="com.yl.autowire.Address"10         p:city="BeiJing" p:street="HuiLongGuan"></bean>11 12     <bean id="car" class="com.yl.autowire.Car"13         p:brand="Audi" p:price="30000"></bean>14         15     <!-- <bean id="person" class="com.yl.autowire.Person"16         p:name="Tom" p:address-ref="address" p:car-ref="car"></bean> -->17     <!-- 可以使用autowire屬性指定自動裝配的方式,18         byName根據bean的名字和當前bean的setter風格的屬性名進行自動裝配 ,若有匹配的,則進行自動裝配,若沒有匹配的,則不裝配 19         byType根據bean的類型和當前bean的屬性的類型進行自動裝配,若IOC容器中有一個以上的類型匹配的bean,則拋出異常    20     -->21     <bean id="person" class="com.yl.autowire.Person"22         p:name="Tom" autowire="byName"></bean>23 </beans>

自動裝配的缺點在bean配置文件里設置autowire屬性進行自動裝配將會裝配bean的所有屬性,然而,若只希望裝配個別屬性時,autowire就不夠靈活了。autowire屬性要么根據類型自動裝配,要么根據名稱自動裝配,不能兩者兼而有之一般情況下,在實際的項目中很少使用自動裝配功能,因為和自動裝配功能所帶來的好處比起來,明確清晰的配置文檔更有說服力。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 石首市| 徐水县| 和静县| 赤峰市| 和田市| 宁河县| 楚雄市| 安图县| 高清| 浪卡子县| 昂仁县| 韶山市| 客服| 开化县| 措美县| 赤水市| 江口县| 太仆寺旗| 攀枝花市| 博兴县| 柳州市| 台湾省| 基隆市| 小金县| 遂平县| 钟祥市| 武乡县| 丽江市| 遂平县| 三江| 潢川县| 溧水县| 正安县| 赣榆县| 保康县| 武夷山市| 石首市| 巴彦县| 铜鼓县| 合肥市| 平顺县|