溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

spring事務(wù)如何配置

發(fā)布時(shí)間:2021-12-07 11:42:57 來源:億速云 閱讀:133 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關(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代碼

  1. <?xmlversion="1.0"encoding="gb2312"?>  

  2. <!--    Spring配置文件的文件頭,包含DTD等信息--&gt  

  3. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"  

  4.      "http://www.springframework.org/dtd/spring-beans.dtd">  

  5. <beans>  

  6.    <!--定義數(shù)據(jù)源--&gt  

  7.    <beanid="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource">  

  8.        <!--    定義數(shù)據(jù)庫驅(qū)動(dòng)--&gt  

  9.            <propertyname="driverClassName"><value>com.mysql.jdbc.Drivervalue>property>  

  10.        <!--    定義數(shù)據(jù)庫url--&gt  

  11.            <propertyname="url"><value>jdbc:mysql://localhost:3306/springvalue>property>  

  12. <!--    定義數(shù)據(jù)庫用戶名--&gt  

  13.            <propertyname="username"><value>rootvalue>property>  

  14.        <!--    定義數(shù)據(jù)庫密碼--&gt  

  15.            <propertyname="password"><value>32147value>property>  

  16.    bean>  

  17.    <!--定義一個(gè)hibernate的SessionFactory--&gt  

  18. <beanid="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  

  19.        <!--    定義SessionFactory必須注入DataSource--&gt  

  20.            <propertyname="dataSource"><reflocal="dataSource"/>property>  

  21.            <propertyname="mappingResources">  

  22.            <list>  

  23.                <!--以下用來列出所有的PO映射文件--&gt  

  24.                <value>Person.hbm.xmlvalue>  

  25.            list>  

  26.            property>  

  27.            <propertyname="hibernateProperties">  

  28.            <props>  

  29. <!--此處用來定義hibernate的SessionFactory的屬性:  

  30. 不同數(shù)據(jù)庫連接,啟動(dòng)時(shí)選擇create,update,create-drop-->  

  31.            <propkey="hibernate.dialect">org.hibernate.dialect.MySQLDialectprop>  

  32.            <propkey="hibernate.hbm2ddl.auto">updateprop>  

  33.        props>  

  34.        property>  

  35.    bean>  

  36.    <!--    定義事務(wù)管理器,使用適用于Hibernte的事務(wù)管理器--&gt  

  37. <beanid="transactionManager"  

  38.         class="org.springframework.orm.hibernate3.HibernateTransactionManager">  

  39.            <!--    HibernateTransactionManager    bean需要依賴注入一個(gè)SessionFactory bean的引用--&gt  

  40.            <propertyname="sessionFactory"><reflocal="sessionFactory"/>property>  

  41. bean>  

  42.  

  43.    <!--    配置事務(wù)攔截器--&gt  

  44. <beanid="transactionInterceptor"  

  45. class="org.springframework.transaction.interceptor.TransactionInterceptor">  

  46.        <!--    事務(wù)攔截器bean需要依賴注入一個(gè)事務(wù)管理器 --&gt  

  47.        <propertyname="transactionManager"ref="transactionManager"/>  

  48.        <propertyname="transactionAttributes">  

  49.            <!--    下面定義事務(wù)傳播屬性--&gt  

  50.            <props>  

  51.                <propkey="insert*">PROPAGATION_REQUIREDprop>  

  52.                <propkey="find*">PROPAGATION_REQUIRED,readOnlyprop>  

  53.                <propkey="*">PROPAGATION_REQUIREDprop>  

  54.            props>  

  55.        property>  

  56.    bean>  

  57. <!-- 定義BeanNameAutoProxyCreator,該bean是個(gè)bean后處理器,無需被引用,因此沒有id屬性  

  58. 這個(gè)bean后處理器,根據(jù)事務(wù)攔截器為目標(biāo)bean自動(dòng)創(chuàng)建事務(wù)代理  

  59.     <beanclass="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">  

  60.            指定對滿足哪些bean name的bean自動(dòng)生成業(yè)務(wù)代理 -->  

  61. <propertyname="beanNames">  

  62.            <!--    下面是所有需要自動(dòng)創(chuàng)建事務(wù)代理的bean--&gt  

  63.            <list>  

  64.                <value>personDaovalue>  

  65.            list>  

  66.            <!--    此處可增加其他需要自動(dòng)創(chuàng)建事務(wù)代理的bean--&gt  

  67.        property>  

  68.        <!--    下面定義BeanNameAutoProxyCreator所需的事務(wù)攔截器--&gt  

  69.        <propertyname="interceptorNames">  

  70.            <list>  

  71.                <value>transactionInterceptorvalue>  

  72.                    <!-- 此處可增加其他新的Interceptor --&gt  

  73.            list>  

  74.        property>  

  75.    bean>  

  76.    <!--定義DAO Bean ,由于BeanNameAutoProxyCreator自動(dòng)生成事務(wù)代理--&gt  

  77.    <beanid="personDao"class="lee.PersonDaoHibernate">  

  78.        <propertyname="sessionFactory"><reflocal="sessionFactory"/>property>  

  79. bean>  

  80. beans>  

感謝各位的閱讀!關(guān)于“spring事務(wù)如何配置”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(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)容。

AI