前些日子在开发一个项目的过程中,碰到了这样一个问题,现在拿出来于大家分享:
问题描述:
项目中我使用的是Spring2声明式事务,并将此事务作用于Service层(业务逻辑层)。
部分配置代码如下所示:
<!-- hibernate事务定义 -->
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 以AspectJ方式 定义 AOP, 如果service没有基于接口,使用cgilib来实现AOP,定义proxy-target-class="true" (3) -->
<aop:config proxy-target-class="true">
<aop:advisor pointcut="execution(* gos.business..*Service.*(..))" advice-ref="txAdvice"/>
</aop:config>
<!-- 基本事务定义,使用transactionManager作事务管理. -->
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="*" read-only="true" />
</tx:attributes>
</tx:advice>
如果你在service层的方法中使用try/catch块,那么有时问题出现了:
1.代码就算有异常,它也不会捕获。即不起作用。
2.事务不会回滚。
解决方案:
由于spring2做了将异常统一为DataAccessException的处理,所有你不需要在service层做任何的异常捕获动作,你只要在ACTION中使用try/catch块捕获相应的异常就OK了。
分享到:
相关推荐
spring声明式事务实例 可复制修改使用。。。。。。。。。。
Spring声明式事务配置管理方法
spring声明式事务处理demo。myeclipse工程
spring+mybatis的声明式事务
Spring 声明式事务和Spring 编程式事务
Spring源代码解析(六):Spring声明式事务处理.doc
<?xml version="1.0" encoding="UTF-8"?><beansxmlns=...
spring编程式事务与声明式事务详解,超详细!
5.2.2 基于Annotation方式的声明式事务 基于Annotation方式的声明式事务 1 在Spring容器中注册事务注解驱动; 2 在需要事务管理的类或方法上使用@Transactional注解。 ...
1. 基于Aspectj实现动态数据源...6. 实现事务内切换数据源(支持原生Spring声明式事务哟,仅此一家),并支持多数据源事务回滚(有了它除了跨服务的事务你需要考虑分布式事务,其他都不需要,极大的减少了系统的复杂程度)
在Spring3中配置声明式事务比早期版本显得更加简便。只需要几行配置文件+注解就可以实现面向切面的AOP事务
本代码使用H2内存数据库演示spring事务使用,包括编程式事务,声明式事务@Transactional使用,自定义事务事务注解实现自定义事务管理器
spring3,hibernate4 配置声明式事务管理(annotation方式)
NULL 博文链接:https://ymgjava.iteye.com/blog/1117624
Java高级编程 实验报告 spring 声明事务 实验目的 掌握spring 声明式事务管理配置 实验环境 本实验采用本实验采用的eclipse或者 Myeclpse开发工具。Spring 4.0以上 Jdk1.7以上、oracle/mysql。
Spring_Hibernate使用TransactionInterceptor声明式事务配置.doc
(2)(2) 在BookShopDao中添加一个purchase购书方法,其操作流程是获取书的单价->买书(更新库存)->更新账户余额,在BookShopDaoImp中实现该方法,并使用基于XML和Annotation的声明式事务管理来确保该购书过程能正常...
一个使用MyBatisPlus+Spring实现声明式事务的案例,亲测可用
NULL 博文链接:https://tonl.iteye.com/blog/2093314