欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Spring事務配置的五種方式

系統 1813 0

段時間對Spring事務配置做了比較深入的研究,在此之間對Spring事務配置雖說也配置過,但是一直沒有一個清楚的認識。通過這次的學習發覺Spring事務配置只要把思路理清,還是比較好掌握的。

總結如下:

Spring配置文件中關于Spring事務配置總是由三個組成部分,分別是DataSource、TransactionManager和代理機制這三部分,無論哪種配置方式,一般變化的只是代理機制這部分。

DataSource、TransactionManager這兩部分只是會根據數據訪問方式有所變化,比如使用Hibernate進行數據訪問時,DataSource實際為SessionFactory,TransactionManager的實現為 HibernateTransactionManager。

具體如下圖:

Spring事務配置的五種方式


根據代理機制的不同,總結了五種Spring事務的配置方式,配置文件如下:

第一種方式:每個Bean都有一個代理

  1. <? xml version = "1.0" encoding = "UTF-8" ?>
  2. < beans xmlns = "http://www.springframework.org/schema/beans"
  3. xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context = "http://www.springframework.org/schema/context"
  5. xmlns:aop = "http://www.springframework.org/schema/aop"
  6. xsi:schemaLocation ="http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
  8. http://www.springframework.org/schema/context
  9. http://www.springframework.org/schema/context/spring-context-2.5.xsd
  10. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd " >
  11. < bean id = "sessionFactory"
  12. class = "org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
  13. < property name = "configLocation" value = "classpath:hibernate.cfg.xml" />
  14. < property name = "configurationClass" value = "org.hibernate.cfg.AnnotationConfiguration" />
  15. </ bean >
  16. <!--定義事務管理器(聲明式的事務)-->
  17. < bean id = "transactionManager"
  18. class = "org.springframework.orm.hibernate3.HibernateTransactionManager" >
  19. < property name = "sessionFactory" ref = "sessionFactory" />
  20. </ bean >
  21. <!--配置DAO-->
  22. < bean id = "userDaoTarget" class = "com.bluesky.spring.dao.UserDaoImpl" >
  23. < property name = "sessionFactory" ref = "sessionFactory" />
  24. </ bean >
  25. < bean id = "userDao"
  26. class = "org.springframework.transaction.interceptor.TransactionProxyFactoryBean" >
  27. <!--配置事務管理器-->
  28. < property name = "transactionManager" ref = "transactionManager" />
  29. < property name = "target" ref = "userDaoTarget" />
  30. < property name = "proxyInterfaces" value = "com.bluesky.spring.dao.GeneratorDao" />
  31. <!--配置事務屬性-->
  32. < property name = "transactionAttributes" >
  33. < props >
  34. < prop key = "*" > PROPAGATION_REQUIRED </ prop >
  35. </ props >
  36. </ property >
  37. </ bean >
  38. </ beans >

第二種方式:所有Bean共享一個父類bean

  1. <? xml version = "1.0" encoding = "UTF-8" ?>
  2. < beans xmlns = "http://www.springframework.org/schema/beans"
  3. xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context = "http://www.springframework.org/schema/context"
  5. xmlns:aop = "http://www.springframework.org/schema/aop"
  6. xsi:schemaLocation ="http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
  8. http://www.springframework.org/schema/context
  9. http://www.springframework.org/schema/context/spring-context-2.5.xsd
  10. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd " >
  11. < bean id = "sessionFactory"
  12. class = "org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
  13. < property name = "configLocation" value = "classpath:hibernate.cfg.xml" />
  14. < property name = "configurationClass" value = "org.hibernate.cfg.AnnotationConfiguration" />
  15. </ bean >
  16. <!--定義事務管理器(聲明式的事務)-->
  17. < bean id = "transactionManager"
  18. class = "org.springframework.orm.hibernate3.HibernateTransactionManager" >
  19. < property name = "sessionFactory" ref = "sessionFactory" />
  20. </ bean >
  21. < bean id = "transactionBase"
  22. class = "org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
  23. lazy-init = "true" abstract = "true" >
  24. <!--配置事務管理器-->
  25. < property name = "transactionManager" ref = "transactionManager" />
  26. <!--配置事務屬性-->
  27. < property name = "transactionAttributes" >
  28. < props >
  29. < prop key = "*" > PROPAGATION_REQUIRED </ prop >
  30. </ props >
  31. </ property >
  32. </ bean >
  33. <!--配置DAO-->
  34. < bean id = "userDaoTarget" class = "com.bluesky.spring.dao.UserDaoImpl" >
  35. < property name = "sessionFactory" ref = "sessionFactory" />
  36. </ bean >
  37. < bean id = "userDao" parent = "transactionBase" >
  38. < property name = "target" ref = "userDaoTarget" />
  39. </ bean >
  40. </ beans >

第三種方式:使用攔截器

  1. <? xml version = "1.0" encoding = "UTF-8" ?>
  2. < beans xmlns = "http://www.springframework.org/schema/beans"
  3. xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context = "http://www.springframework.org/schema/context"
  5. xmlns:aop = "http://www.springframework.org/schema/aop"
  6. xsi:schemaLocation ="http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
  8. http://www.springframework.org/schema/context
  9. http://www.springframework.org/schema/context/spring-context-2.5.xsd
  10. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd " >
  11. < bean id = "sessionFactory"
  12. class = "org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
  13. < property name = "configLocation" value = "classpath:hibernate.cfg.xml" />
  14. < property name = "configurationClass" value = "org.hibernate.cfg.AnnotationConfiguration" />
  15. </ bean >
  16. <!--定義事務管理器(聲明式的事務)-->
  17. < bean id = "transactionManager"
  18. class = "org.springframework.orm.hibernate3.HibernateTransactionManager" >
  19. < property name = "sessionFactory" ref = "sessionFactory" />
  20. </ bean >
  21. < bean id = "transactionInterceptor"
  22. class = "org.springframework.transaction.interceptor.TransactionInterceptor" >
  23. < property name = "transactionManager" ref = "transactionManager" />
  24. <!--配置事務屬性-->
  25. < property name = "transactionAttributes" >
  26. < props >
  27. < prop key = "*" > PROPAGATION_REQUIRED </ prop >
  28. </ props >
  29. </ property >
  30. </ bean >
  31. < bean class = "org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator" >
  32. < property name = "beanNames" >
  33. < list >
  34. < value > *Dao </ value >
  35. </ list >
  36. </ property >
  37. < property name = "interceptorNames" >
  38. < list >
  39. < value > transactionInterceptor </ value >
  40. </ list >
  41. </ property >
  42. </ bean >
  43. <!--配置DAO-->
  44. < bean id = "userDao" class = "com.bluesky.spring.dao.UserDaoImpl" >
  45. < property name = "sessionFactory" ref = "sessionFactory" />
  46. </ bean >
  47. </ beans >

第四種方式:使用tx標簽配置的攔截器

  1. <? xml version = "1.0" encoding = "UTF-8" ?>
  2. < beans xmlns = "http://www.springframework.org/schema/beans"
  3. xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context = "http://www.springframework.org/schema/context"
  5. xmlns:aop = "http://www.springframework.org/schema/aop"
  6. xmlns:tx = "http://www.springframework.org/schema/tx"
  7. xsi:schemaLocation ="http://www.springframework.org/schema/beans
  8. http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
  9. http://www.springframework.org/schema/context
  10. http://www.springframework.org/schema/context/spring-context-2.5.xsd
  11. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
  12. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd " >
  13. ?
  14. < context:annotation-config />
  15. < context:component-scan base-package = "com.bluesky" />
  16. < bean id = "sessionFactory"
  17. class = "org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
  18. < property name = "configLocation" value = "classpath:hibernate.cfg.xml" />
  19. < property name = "configurationClass" value = "org.hibernate.cfg.AnnotationConfiguration" />
  20. </ bean >
  21. <!--定義事務管理器(聲明式的事務)-->
  22. < bean id = "transactionManager"
  23. class = "org.springframework.orm.hibernate3.HibernateTransactionManager" >
  24. < property name = "sessionFactory" ref = "sessionFactory" />
  25. </ bean >
  26. < tx:advice id = "txAdvice" transaction-manager = "transactionManager" >
  27. < tx:attributes >
  28. < tx:method name = "*" propagation = "REQUIRED" />
  29. </ tx:attributes >
  30. </ tx:advice >
  31. < aop:config >
  32. < aop:pointcut id = "interceptorPointCuts"
  33. expression = "execution(*com.bluesky.spring.dao.*.*(..))" />
  34. < aop:advisor advice-ref = "txAdvice"
  35. pointcut-ref = "interceptorPointCuts" />
  36. </ aop:config >
  37. </ beans >

第五種方式:全注解

  1. <? xml version = "1.0" encoding = "UTF-8" ?>
  2. < beans xmlns = "http://www.springframework.org/schema/beans"
  3. xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context = "http://www.springframework.org/schema/context"
  5. xmlns:aop = "http://www.springframework.org/schema/aop"
  6. xmlns:tx = "http://www.springframework.org/schema/tx"
  7. xsi:schemaLocation ="http://www.springframework.org/schema/beans
  8. http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
  9. http://www.springframework.org/schema/context
  10. http://www.springframework.org/schema/context/spring-context-2.5.xsd
  11. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
  12. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd " >
  13. ?
  14. < context:annotation-config />
  15. < context:component-scan base-package = "com.bluesky" />
  16. < tx:annotation-driven transaction-manager = "transactionManager" />
  17. < bean id = "sessionFactory"
  18. class = "org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
  19. < property name = "configLocation" value = "classpath:hibernate.cfg.xml" />
  20. < property name = "configurationClass" value = "org.hibernate.cfg.AnnotationConfiguration" />
  21. </ bean >
  22. <!--定義事務管理器(聲明式的事務)-->
  23. < bean id = "transactionManager"
  24. class = "org.springframework.orm.hibernate3.HibernateTransactionManager" >
  25. < property name = "sessionFactory" ref = "sessionFactory" />
  26. </ bean >
  27. </ beans >

此時在DAO上需加上@Transactional注解,如下:

  1. packagecom.bluesky.spring.dao;
  2. importjava.util.List;
  3. importorg.hibernate.SessionFactory;
  4. importorg.springframework.beans.factory.annotation.Autowired;
  5. importorg.springframework.orm.hibernate3.support.HibernateDaoSupport;
  6. importorg.springframework.stereotype.Component;
  7. importcom.bluesky.spring.domain.User;
  8. @Transactional
  9. @Component("userDao")
  10. publicclassUserDaoImplextendsHibernateDaoSupportimplementsUserDao{
  11. publicList < User > listUsers(){
  12. returnthis.getSession().createQuery("fromUser").list();
  13. }
  14. }

?

Spring事務配置的五種方式


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲欧美视频 | 亚洲一一在线 | 久草在线中文888 | 亚洲美女毛片 | 国产一区二区三区在线 | 男人天堂网av | 蜜桃免费一区二区三区 | 国产精品极品美女在线观看免费 | 欧美色综合天天久久综合精品 | 国产伦精品一区二区 | 国产一区二区三区久久久久久久久 | 免费中日高清无专码有限公司 | 天天爱天天做天天干 | av免费网站在线观看 | 激情网五月天 | 91精品国产露脸在线 | 天天看片天天a免费观看 | 欧美理论影院在线观看免费 | 欧美一区二区三区在线观看视频 | 国产二区在线播放 | 欧美成人三区 | 五月天丁香久久 | 青青青青手机在线视频观看国产 | 国产精品爱久久久久久久电影 | 国产精品视频在线观看 | 六月激情综合 | 亚洲视频www| 操操碰| 国产精品久久久久免费 | 97色伦网| 9久热这里只有精品免费 | 免费一区二区三区 | 企鹅公装网 | 久久综合九色综合桃花 | 蜜桃日本免费MV免费播放 | 91精品一区二区 | 日本免费不卡在线一区二区三区 | 欧美黑b| 极色品影院 | 99久久精品国产免看国产一区 | 日韩城人免费 |