spring3.0事务的配置

第一种配置方法:基于XML的事务管理

这种方法不需要对原有的业务做任何修改,通过在XML文件中定义需要拦截方法的匹配即可完成配置,要求是,业务处理中的方法的命名要有规律,比如setXxx,xxxUpdate等等。详细配置如下:

Xml代码  

  1. <!-- 定义事务处理类,不同的数据访问方式,事务处理类不同
  2. 比如:Hibernate操作的HibernateTransactionManager,JDBC操作的使用DataSourceTransactionManager
  3. -->
  4. <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  5. <property name="dataSource" ref="dataSource"></property>
  6. </bean>
  7. <!-- 定义事务通知 -->
  8. <tx:advice id="txAdvice" transaction-manager="transactionManager">
  9. <!-- 定义方法的过滤规则 -->
  10. <tx:attributes>
  11. <!-- 所有方法都使用事务 -->
  12. <tx:method name="*" propagation="REQUIRED"/>
  13. <!-- 定义所有get开头的方法都是只读的 -->
  14. <tx:method name="get*" read-only="true"/>
  15. </tx:attributes>
  16. </tx:advice>
  17. <!-- 定义AOP配置 -->
  18. <aop:config>
  19. <!-- 定义一个切入点 -->
  20. <aop:pointcut expression="execution (* com.iflysse.school.services.impl.*.*(..))" id="services"/>
  21. <!-- 对切入点和事务的通知,进行适配 -->
  22. <aop:advisor advice-ref="txAdvice" pointcut-ref="services"/>
  23. </aop:config>

第二中配置方法:基于@Transactional的事务管理

这种方法,只需要在Spring配置文件中定义一个事务管理对象(如DataSourceTransactionManager),然后加入<tx:annotation-driven/>节点,引用该事务管理对象,然后即可在需要进行事务处理的方法使用@Transactional进行标注。示例如下:

Spring配置XML文件

Xml代码  

  1. <!-- 定义事务处理类,不同的数据访问方式,事务处理类不同
  2. 比如:Hibernate操作的HibernateTransactionManager,JDBC操作的使用DataSourceTransactionManager
  3. -->
  4. <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  5. <property name="dataSource" ref="dataSource"></property>
  6. </bean>
  7. <!-- 声明使用注解式事务 -->
  8. <tx:annotation-driven transaction-manager="transactionManager"/>

Java代码中@Transactional示例

Java代码  

  1. /**
  2. * @author ZYWANG 2011-3-24
  3. */
  4. @Service
  5. @Transactional(propagation = Propagation.REQUIRED)
  6. public class TeacherServicesImpl implements TeacherServices {
  7. @Autowired
  8. TeacherDao dao = null;
  9. public TeacherDao getDao() {
  10. return dao;
  11. }
  12. public void setDao(TeacherDao dao) {
  13. this.dao = dao;
  14. }
  15. @Override
  16. @Transactional(readOnly=true,propagation=Propagation.NEVER)
  17. public List<Teacher> getAllTeachers() {
  18. return getDao().getAllTeachers();
  19. }
  20. @Override
  21. public void addTeacher(Teacher teacher) {
  22. if(teacher.getId() > 0){
  23. getDao().updateTeacher(teacher);
  24. }else{
  25. getDao().addTeacher(teacher);
  26. }
  27. }
  28. }

 个人认为第一中方式的配置的侵入性低多了,写程序时只需要关注业务和命名规范,不需要考虑事务处理;第二种方式的配置可以更加灵活的使用事务,个性化定制。

以上配置基于Spring 3.0.5 进行设置,参考其《Reference Documentation》

原文链接:http://war-martin.iteye.com/blog/1396335

时间: 2024-10-07 10:47:57

spring3.0事务的配置的相关文章

spring3.0事务管理配置

转载:http://war-martin.iteye.com/blog/1396335 第一种配置方法:基于XML的事务管理 这种方法不需要对原有的业务做任何修改,通过在XML文件中定义需要拦截方法的匹配即可完成配置,要求是,业务处理中的方法的命名要有规律,比如setXxx,xxxUpdate等等.详细配置如下: Xml代码   <!-- 定义事务处理类,不同的数据访问方式,事务处理类不同 比如:Hibernate操作的HibernateTransactionManager,JDBC操作的使用D

spring3.0定时器 xml配置和注解方式

1.xml配置方式 web.xml <!-- 配置spring监听器和配置文件路径 -->     <context-param>         <param-name>contextConfigLocation</param-name>         <param-value>classpath:applicationContext.xml</param-value>     </context-param>    

spring3.0+Atomikos 构建jta的分布式事务

摘自: http://gongjiayun.iteye.com/blog/1570111 spring3.0已经不再支持jtom了,不过我们可以用第三方开源软件atomikos(http://www.atomikos.com/)来实现. Atomikos是目前在分布式事务管理中做得相当不错的开源软件.有10年以上的经验,Atomikos保障您的关键事务和 防止昂贵的数据丢失在发生系统故障或事故中.Atomikos支持XA(全局事务)和NON-XA(非全局事务),NON-XA效率高 于XA.本文主

【Spring】Spring3.0.5的下载、配置与Helloworld

Spring这东西其实没有想象中这么难,只是由于网上大部分资料杂糅了许多其它奇奇怪怪的技术,什么Maven,log4j,什么东西都来,还有上来就将SSH整合的,那叫初学者,怎么可能看懂?下面以一个最简单,无其它额外的技术,讲解一下Spring. 一.Spring下载 首先,Spring的下载就是一个问题.这些框架的官网改来改去,然后在强推其新技术,把历史版本通通都去掉了.正如ExtJs一样,只能在国内的网上搜一下历史版本下载.要搞Spring3.0要下两个压缩包.一个是spring-framew

Spring3.0第三讲:Spring实现简单的登录

学习Spring这些技术性框架,光掌握理论知识是远远不够了,我们要懂得学以致用,用键盘将学到的敲出来,在正确与错误中寻找Spring的用法. 为了给读者一个直观的概念,这里我用Spring搭建一个简单的登录,可以让你很快的了解Spring在持久层.业务层.表现层是怎么运作的,这样后面我们分模块讲解的时候,读者也能很快的知道. 本文所用工具为Eclipse IDE,数据库为Oracle 11g. 首先我们来了解登录这个功能,用户访问登录页面,输入账号和密码,点击登录,后台验证是否有账号和密码匹配,

spring3.0使用annotation完全代替XML(三)

很久之前写过两篇博客: spring3.0使用annotation完全代替XML spring3.0使用annotation完全代替XML(续) 用java config来代替XML,当时还遗留下一些问题: <tx:annotation-driven />声明性事务等配置无法用简单代码来实现 web.xml无法去掉 随着servlet 3.0规范以及spring3.1.M2的发布,现在以上的问题也解决了. 先来说说web.xml,有两种方法来替代 (一)annotation Java代码  

Jbpm4.4+hibernate3.5.4+spring3.0.4+struts2.1.8 整合例子

转自:http://www.blogjava.net/wangxinsh55/archive/2011/07/24/354925.html Jbpm4.4+hibernate3.5.4+spring3.0.4+struts2.1.8整合例子(附完整的请假流程例子,jbpm基础,常见问题解决) Jbpm4.4+hibernate3.5.4+spring3.0.4+struts2.1.8 整合例子(附完整的请假流程例子). 1.       jbpm4.4 测试环境搭建 2.       Jbpm4

Spring3.0入门笔记(1)

这几天利用项目结项后的空隙,入门学习下Idea+maven+spring+springMVC.作为一个菜鸟,好记性不如烂笔头,在这里简要写下一些笔记. 1.idea里没有类似myeclipse的workspace的概念,与之类似的是project.同事一个project下可以有多个module,这里的module类似于myeclipse中的project. 2,maven是一个帮助构建(build)项目,管理jar包依赖的工具.它的使用和工作原理跟我现在用的myeclipse直接丢(引入)jar

整合Struts2.2+Spring3.0

2014-08-08 学习李刚老师的j2ee整合struts2+spring3 JAR包链接 http://download.csdn.net/detail/u010393809/7732235 项目outline 1.引入JAR包,上面已经贴了JAR包下载链接 2.配置Struts2,只需要引入struts2必需的那几个包,此时暂时不要引入struts2-spring-plugin-2.2.1.jar,不然会抛出javaPointerNull的异常 配置web.xml; 配置struts.xm