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