3、Spring4之Bean 配置的细节
生活随笔
收集整理的這篇文章主要介紹了
3、Spring4之Bean 配置的细节
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1). 若字面值中包括特殊字符,則能夠使用
value 節點的 <![CDATA[]]> 把字面值包裹起來。
<constructor-arg>
<!-- 若 value 屬性值中包括特殊字符串, 則能夠使用 value 子節點來注入屬性值. value 子節點中能夠使用 CDATA -->
<value><![CDATA[Zheng <><> zhou]]></value>
</constructor-arg>
2). 在 Bean 的配置文件里, 能夠通過 <ref> 元素或 ref 屬性為
Bean 的屬性或構造器參數指定對 Bean 的引用.
<bean id="dao" class="com.atguigu.spring.ioc.ref.Dao">
<property name="database" value="DB2"></property>
</bean>
<bean id="service2" class="com.atguigu.spring.ioc.ref.Service">
<property name="dao" ref="dao"></property>
</bean>
------------------------------------------------------------------------------
解析:<property name="dao" ref="dao"></property> 的作用為:
Dao dao = (Dao)ctx.getBean("dao");
Service service = (Service)ctx.getBean("service2");
service.setDao(dao);
3). 能夠在屬性或構造器里包括 Bean 的聲明, 這種 Bean 稱為內部 Bean
<bean class="com.atguigu.spring.ioc.ref.Service" id="service">
<property name="dao">
<bean class="com.atguigu.spring.ioc.ref.Dao">
<property name="database" value="MySQL"></property>
</bean>
</property>
</bean>
解釋:類似于下面代碼,但 dao 的這個 bean 事實上是沒有 id 的,也不能被其它的 bean 來引用。也不能單獨從 IOC 容器中獲取。
<bean class="com.atguigu.spring.ioc.ref.Dao" id="dao">
<property name="database" value="MySQL"></property>
</bean>
<bean class="com.atguigu.spring.ioc.ref.Service" id="service">
<property name="dao" ref="dao"></property>
</bean>
①. 當 Bean 實例只給一個特定的屬性使用時, 能夠將其聲明為內部 Bean.
內部 Bean 聲明直接包括在 <property> 或 <constructor-arg> 元素里, 不須要設置不論什么 id 或 name 屬性
②. 內部 Bean 不能使用在不論什么其它地方
4). 能夠使用專用的 <null/> 元素標簽為 Bean 的字符串或其他對象類型的屬性注入
null 值
<bean id="car6" class="com.atguigu.spring.ioc.Car">
<!-- 為 maxSpeed 賦值為 null, 而 value="null" 是把 null 這個字符串賦給了相應的屬性 -->
<property name="corp"><null/></property>
</bean>
5). Spring 支持級聯屬性的配置。
<bean id="action3" class="com.atguigu.spring.ioc.ref.Action">
<property name="service" ref="service2"></property>
<!-- 為 service 的 dao 的 database 賦值為 ORACLE -->
<property name="service.dao.database" value="ORACLE"></property>
</bean>
6). 配置 java.util.List 類型的屬性, 須要指定 <list> 標簽, 在標簽里包括一些元素.
這些標簽能夠通過 <value> 指定簡單的常量值, 通過 <ref> 指定對其它 Bean 的引用.
通過<bean> 指定內置 Bean 定義.
通過 <null/> 指定空元素. 甚至能夠內嵌其它集合.
<property name="cars">
<!-- 通過 list 指定集合屬性的值. 但 list 是一個內部 list, 不能被其它的 bean 引用. -->
<list>
<!-- ref 直接指向已有的 bean -->
<ref bean="car"/>
<ref bean="car2"/>
<ref bean="car3"/>
<!-- bean 聲明內部 bean -->
<bean class="com.atguigu.spring.ioc.Car">
<property name="brand" value="BMW"></property>
<property name="corp" value="HuaChen"></property>
<property name="maxSpeed" value="300"></property>
<property name="price" value="800000"></property>
</bean>
</list>
</property>
7). 能夠使用 util schema 里的集合標簽定義獨立的集合 Bean. 須要注意的是, 必須在 <beans> 根元素里加入 util schema 定義
①. 導入 util 命名空間
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">
②. 定義集合 Bean
<util:list id="cars">
<!-- ref 直接指向已有的 bean -->
<ref bean="car"/>
<ref bean="car2"/>
<ref bean="car3"/>
<!-- bean 聲明內部 bean -->
<bean class="com.atguigu.spring.ioc.Car">
<property name="brand" value="BMW"></property>
<property name="corp" value="HuaChen"></property>
<property name="maxSpeed" value="300"></property>
<property name="price" value="800000"></property>
</bean>
</util:list>
8). 配置 Map Bean
<util:map id="config">
<entry key="user" value="root"></entry>
<entry key="password" value="1230"></entry>
<entry key="driverClass" value="com.mysql.jdbc.Driver"></entry>
<entry key="jdbcUrl" value="jdbc:mysql:///test"></entry>
</util:map>
9). 配置 Properties 的屬性
<property name="properties">
<props>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="b">B</prop>
<prop key="c">C</prop>
<prop key="d">D</prop>
</props>
</property>
10). 使用 p 命名空間簡化 bean 的屬性配置:
①. 導入 p 的命名空間
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">
②. 使用 p 命名空間進行配置
<bean id="car7" class="com.atguigu.spring.ioc.Car"
p:brand="Mazda"
p:corp="ChangAn"
p:maxSpeed="220"
p:price="200000"/>
value 節點的 <![CDATA[]]> 把字面值包裹起來。
<constructor-arg>
<!-- 若 value 屬性值中包括特殊字符串, 則能夠使用 value 子節點來注入屬性值. value 子節點中能夠使用 CDATA -->
<value><![CDATA[Zheng <><> zhou]]></value>
</constructor-arg>
2). 在 Bean 的配置文件里, 能夠通過 <ref> 元素或 ref 屬性為
Bean 的屬性或構造器參數指定對 Bean 的引用.
<bean id="dao" class="com.atguigu.spring.ioc.ref.Dao">
<property name="database" value="DB2"></property>
</bean>
<bean id="service2" class="com.atguigu.spring.ioc.ref.Service">
<property name="dao" ref="dao"></property>
</bean>
------------------------------------------------------------------------------
解析:<property name="dao" ref="dao"></property> 的作用為:
Dao dao = (Dao)ctx.getBean("dao");
Service service = (Service)ctx.getBean("service2");
service.setDao(dao);
3). 能夠在屬性或構造器里包括 Bean 的聲明, 這種 Bean 稱為內部 Bean
<bean class="com.atguigu.spring.ioc.ref.Service" id="service">
<property name="dao">
<bean class="com.atguigu.spring.ioc.ref.Dao">
<property name="database" value="MySQL"></property>
</bean>
</property>
</bean>
解釋:類似于下面代碼,但 dao 的這個 bean 事實上是沒有 id 的,也不能被其它的 bean 來引用。也不能單獨從 IOC 容器中獲取。
<bean class="com.atguigu.spring.ioc.ref.Dao" id="dao">
<property name="database" value="MySQL"></property>
</bean>
<bean class="com.atguigu.spring.ioc.ref.Service" id="service">
<property name="dao" ref="dao"></property>
</bean>
①. 當 Bean 實例只給一個特定的屬性使用時, 能夠將其聲明為內部 Bean.
內部 Bean 聲明直接包括在 <property> 或 <constructor-arg> 元素里, 不須要設置不論什么 id 或 name 屬性
②. 內部 Bean 不能使用在不論什么其它地方
4). 能夠使用專用的 <null/> 元素標簽為 Bean 的字符串或其他對象類型的屬性注入
null 值
<bean id="car6" class="com.atguigu.spring.ioc.Car">
<!-- 為 maxSpeed 賦值為 null, 而 value="null" 是把 null 這個字符串賦給了相應的屬性 -->
<property name="corp"><null/></property>
</bean>
5). Spring 支持級聯屬性的配置。
<bean id="action3" class="com.atguigu.spring.ioc.ref.Action">
<property name="service" ref="service2"></property>
<!-- 為 service 的 dao 的 database 賦值為 ORACLE -->
<property name="service.dao.database" value="ORACLE"></property>
</bean>
6). 配置 java.util.List 類型的屬性, 須要指定 <list> 標簽, 在標簽里包括一些元素.
這些標簽能夠通過 <value> 指定簡單的常量值, 通過 <ref> 指定對其它 Bean 的引用.
通過<bean> 指定內置 Bean 定義.
通過 <null/> 指定空元素. 甚至能夠內嵌其它集合.
<property name="cars">
<!-- 通過 list 指定集合屬性的值. 但 list 是一個內部 list, 不能被其它的 bean 引用. -->
<list>
<!-- ref 直接指向已有的 bean -->
<ref bean="car"/>
<ref bean="car2"/>
<ref bean="car3"/>
<!-- bean 聲明內部 bean -->
<bean class="com.atguigu.spring.ioc.Car">
<property name="brand" value="BMW"></property>
<property name="corp" value="HuaChen"></property>
<property name="maxSpeed" value="300"></property>
<property name="price" value="800000"></property>
</bean>
</list>
</property>
7). 能夠使用 util schema 里的集合標簽定義獨立的集合 Bean. 須要注意的是, 必須在 <beans> 根元素里加入 util schema 定義
①. 導入 util 命名空間
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">
②. 定義集合 Bean
<util:list id="cars">
<!-- ref 直接指向已有的 bean -->
<ref bean="car"/>
<ref bean="car2"/>
<ref bean="car3"/>
<!-- bean 聲明內部 bean -->
<bean class="com.atguigu.spring.ioc.Car">
<property name="brand" value="BMW"></property>
<property name="corp" value="HuaChen"></property>
<property name="maxSpeed" value="300"></property>
<property name="price" value="800000"></property>
</bean>
</util:list>
8). 配置 Map Bean
<util:map id="config">
<entry key="user" value="root"></entry>
<entry key="password" value="1230"></entry>
<entry key="driverClass" value="com.mysql.jdbc.Driver"></entry>
<entry key="jdbcUrl" value="jdbc:mysql:///test"></entry>
</util:map>
9). 配置 Properties 的屬性
<property name="properties">
<props>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="b">B</prop>
<prop key="c">C</prop>
<prop key="d">D</prop>
</props>
</property>
10). 使用 p 命名空間簡化 bean 的屬性配置:
①. 導入 p 的命名空間
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">
②. 使用 p 命名空間進行配置
<bean id="car7" class="com.atguigu.spring.ioc.Car"
p:brand="Mazda"
p:corp="ChangAn"
p:maxSpeed="220"
p:price="200000"/>
總結
以上是生活随笔為你收集整理的3、Spring4之Bean 配置的细节的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 二手车过户开发票车牌照号是新牌还是旧牌?
- 下一篇: 北京BJ60在越野车中算是什么级别?