您好,登錄后才能下訂單哦!
Spring配置文件的根元素是<beans>.
在<beans>元素內,你可以放所有的Spring配置信息,包括<bean>元素的聲明.
除了Beans命名空間,Spring的核心框架總共自帶了10個命名空間配置:
命名空間 | 用途 | |||
aop | 為聲明切面以及將@AspectJ注解的類代理為Spring切面提供了配置元素 | |||
beans | 支持聲明Bean和裝配Bean,是Spring最核心也是最原始的命名空間 | |||
context | 為配置Spring應用上下文提供了配置元素,包括自動檢測和裝配Bean,注入非Spring直接管理的對象 | |||
jee | 提供了與Java EE API的集成,例如JNDI和EJB | |||
jms | 為聲明消息驅動的POJO提供了配置元素 | |||
lang | 支持配置由Groovy、JRuby、BeanShell等腳本實現的Bean | |||
mvc | 啟用SpringMVC的能力,例如面向注解的控制器、視圖控制器和攔截器 | |||
oxm | 支持Spring的對象到xml配置的映射 | |||
tx | 提供聲明式事物配置 | |||
util | 提供各種各樣的工具類元素,包括把集合配置為Bean,支持屬性占位符元素 |
xml結構如下:
<?xml version="1.0" encoding="UTF-8" ?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd"> <bean id="" class="">......</bean> <bean id="" class="">......</bean></beans>
使用<constructor-arg>元素。如果不配置<constructor-arg>元素,那么Spring將使用默認的構造函數。
<!-- 詩 --><bean id="poem" class="com.wjx.betalot.impl.Sonnet"> <constructor-arg value="Sonnet poem"></constructor-arg></bean><!-- 詩人 --><bean id="poet" class="com.wjx.betalot.impl.Joe"> <constructor-arg ref="poem"></constructor-arg></bean>
<bean>元素有一個factory-method屬性,允許我們調用一個指定的靜態方法,從而代替構造函數來創建一個類的實例
<bean id="stage" class="com.wjx.betalot.impl.Stage" factory-method="getInstance" />
<bean>元素有一個scope屬性,允許我們指定Bean的作用域,Bean的作用域主要有一下幾種,默作用域為單例singleton
作用域 | 定義 |
singleton | 在每一個Spring容器中,一個Bean定義只有一個對象實例(默認) |
prototype | 允許Bean的定義可以被實例化任意次(每次調用都創建一個實例) |
request | 在一次HTTP請求中,每個Bean定義對應一個實例。該作用域僅在基于Web的Spring上下文(例如SpringMVC)中才有效 |
session | 在一個HTTP Session中,每個Bean定義對應一個實例。該作用域僅在基于Web的Spring上下文(例如SpringMVC)中才有效 |
global-session | 在一個全局HTTP Session中,每個Bean定義對應一個實例。該作用域僅在Portlet上下文中才有效 |
<bean id="poem" class="com.wjx.betalot.impl.Sonnet" scope="prototype">
Spring提供了Bean生命周期的鉤子方法。
為Bean定義初始化和銷毀操作,只需要使用init-method和destroy-method參數來配置<bean>元素。init-method屬性指定了在初始化Bean時要調用的方法;destroy-method屬性指定了Bean從容器移除之前要調用的方法。
<!-- 觀眾看表演,表演開始前鼓掌歡迎,表演結束鼓掌 -->
<bean id="auditorium" class="com.wjx.betalot.impl.Auditorium" init-method="applause" destroy-method="applause"/>
使用<beans>元素的default-init-method和default-destroy-method屬性配置所有<bean>共同默認的初始化方法和銷毀方法
<?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 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd" default-init-method="applause" default-destroy-method="applause"> ... </beans>
使用<property>元素。value填充基礎類型值,ref填充<bean>引用
<!-- 詩 --><bean id="poem" class="com.wjx.betalot.impl.Sonnet"> <property name="lines" value="Sonnet poem"></property></bean><!-- 詩人 --><bean id="poet" class="com.wjx.betalot.impl.Joe"> <property name="poem" ref="poem"></property ></bean>
裝配集合屬性,Spring提供了4種類型的集合配置屬性 <list> <set> <map> <props>
<bean id="poeticJuggler" class="com.wjx.betalot.performer.impl.PoeticJuggler"> <property name="poemsMap"> <map> <entry key="POEM1" value-ref="poem1"/> <entry key="POEM2" value-ref="poem2"/> <entry key="POEM3" value-ref="poem3"/> </map> </property> <property name="poemProperties"> <props> <prop key="poem3">POEM3</prop> <prop key="poem2">POEM2</prop> <prop key="poem1">POEM1</prop> </props> </property> <property name="poemList"> <list> <ref bean="poem1"/> <ref bean="poem2"/> <ref bean="poem3"/> </list> </property> <property name="poemSet"> <set> <ref bean="poem1"/> <ref bean="poem2"/> <ref bean="poem3"/> </set> </property></bean>
裝配空值
<property name="someNonNullProperty"><null/></property>
除了<property>元素配置屬性外,使用spring的命名空間p也可以裝配屬性,當然你得在<beans>元素中先引入命名空間p
<?xml version="1.0" encoding="UTF-8" ?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd"> <bean id="poem" class="com.wjx.betalot.impl.Sonnet" p:line="Sonnet"/> <bean id="poet" class="com.wjx.betalot.impl.Joe" p:poem-ref="poem"/></beans>
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。