您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關(guān)spring事務(wù)如何配置的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。
采用這種配置策略,完全可以避免增量式配置,所有的事務(wù)代理由系統(tǒng)自動(dòng)創(chuàng)建。容器中的目標(biāo)bean自動(dòng)消失,避免需要使用嵌套bean來保證目標(biāo)bean不可被訪問。
這種配置方式依賴于Spring提供的bean后處理器,該后處理器用于為每個(gè)bean自動(dòng)創(chuàng)建代理,此處的代理不僅可以是事務(wù)代理,也可以是任意的代理,只需要有合適的攔截器即可。這些是AOP框架的概念,筆者在此處不對AOP進(jìn)行深入介紹。讀者只需了解這種事務(wù)代理的配置方式即可。
下面是采用BeanNameAutoProxyCreator配置事務(wù)代理的配置文件:
Xml代碼
<?xmlversion="1.0"encoding="gb2312"?>
<!-- Spring配置文件的文件頭,包含DTD等信息-->
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!--定義數(shù)據(jù)源-->
<beanid="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<!-- 定義數(shù)據(jù)庫驅(qū)動(dòng)-->
<propertyname="driverClassName"><value>com.mysql.jdbc.Drivervalue>property>
<!-- 定義數(shù)據(jù)庫url-->
<propertyname="url"><value>jdbc:mysql://localhost:3306/springvalue>property>
<!-- 定義數(shù)據(jù)庫用戶名-->
<propertyname="username"><value>rootvalue>property>
<!-- 定義數(shù)據(jù)庫密碼-->
<propertyname="password"><value>32147value>property>
bean>
<!--定義一個(gè)hibernate的SessionFactory-->
<beanid="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!-- 定義SessionFactory必須注入DataSource-->
<propertyname="dataSource"><reflocal="dataSource"/>property>
<propertyname="mappingResources">
<list>
<!--以下用來列出所有的PO映射文件-->
<value>Person.hbm.xmlvalue>
list>
property>
<propertyname="hibernateProperties">
<props>
<!--此處用來定義hibernate的SessionFactory的屬性:
不同數(shù)據(jù)庫連接,啟動(dòng)時(shí)選擇create,update,create-drop-->
<propkey="hibernate.dialect">org.hibernate.dialect.MySQLDialectprop>
<propkey="hibernate.hbm2ddl.auto">updateprop>
props>
property>
bean>
<!-- 定義事務(wù)管理器,使用適用于Hibernte的事務(wù)管理器-->
<beanid="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<!-- HibernateTransactionManager bean需要依賴注入一個(gè)SessionFactory bean的引用-->
<propertyname="sessionFactory"><reflocal="sessionFactory"/>property>
bean>
<!-- 配置事務(wù)攔截器-->
<beanid="transactionInterceptor"
class="org.springframework.transaction.interceptor.TransactionInterceptor">
<!-- 事務(wù)攔截器bean需要依賴注入一個(gè)事務(wù)管理器 -->
<propertyname="transactionManager"ref="transactionManager"/>
<propertyname="transactionAttributes">
<!-- 下面定義事務(wù)傳播屬性-->
<props>
<propkey="insert*">PROPAGATION_REQUIREDprop>
<propkey="find*">PROPAGATION_REQUIRED,readOnlyprop>
<propkey="*">PROPAGATION_REQUIREDprop>
props>
property>
bean>
<!-- 定義BeanNameAutoProxyCreator,該bean是個(gè)bean后處理器,無需被引用,因此沒有id屬性
這個(gè)bean后處理器,根據(jù)事務(wù)攔截器為目標(biāo)bean自動(dòng)創(chuàng)建事務(wù)代理
<beanclass="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
指定對滿足哪些bean name的bean自動(dòng)生成業(yè)務(wù)代理 -->
<propertyname="beanNames">
<!-- 下面是所有需要自動(dòng)創(chuàng)建事務(wù)代理的bean-->
<list>
<value>personDaovalue>
list>
<!-- 此處可增加其他需要自動(dòng)創(chuàng)建事務(wù)代理的bean-->
property>
<!-- 下面定義BeanNameAutoProxyCreator所需的事務(wù)攔截器-->
<propertyname="interceptorNames">
<list>
<value>transactionInterceptorvalue>
<!-- 此處可增加其他新的Interceptor -->
list>
property>
bean>
<!--定義DAO Bean ,由于BeanNameAutoProxyCreator自動(dòng)生成事務(wù)代理-->
<beanid="personDao"class="lee.PersonDaoHibernate">
<propertyname="sessionFactory"><reflocal="sessionFactory"/>property>
bean>
beans>
感謝各位的閱讀!關(guān)于“spring事務(wù)如何配置”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。