欧美三区_成人在线免费观看视频_欧美极品少妇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條評論
主站蜘蛛池模板: 亚洲日本在线天堂无码 | 久久亚洲精品中文字幕 | 性福利影院 | 美女久久久| 久久久久久国产精品免费免费狐狸 | 精品一区二区三区四区五区六区 | 日韩国产在线 | 91精品国产综合久久久蜜臀粉嫩 | 欧美一区二区三区视频 | 欧美高清视频一区 | 国产在线精品一区二区三区 | 国产毛片视频 | 太平公主一级艳史播放高清 | sese综合| 欧美三级视频在线观看 | 成人在线观看av | 午夜在线小视频 | 亚洲高清国产品国语在线观看 | 国产99精品在线观看 | 国产高清免费视频 | 色精品国产| av一区在线观看 | 中文字幕av一区二区 | 视频一区二区三区四区五区 | 欧美aaaaaaaaa | 桥本有菜免费av一区二区三区 | 91麻豆蜜桃一区二区三区 | jizz日本zzz日本护士 | 亚洲免费在线观看 | 操操日| 日日摸夜夜添夜夜添破第一 | 美女在线视频网站 | www.av520 | 午夜免费| jizz18免费视频 | 欧美成人精品 | 99久久精品免费看国产免费 | 两性午夜视频 | 日韩精品一区二区在线播放 | 日韩精品一区二区三区 | 国产视频日本 |