博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot xml声明式事务管理方案
阅读量:6614 次
发布时间:2019-06-24

本文共 3182 字,大约阅读时间需要 10 分钟。

在开发过程中springboot提供的常见的事务解决方案是使用注解方式实现。

使用注解

在启动类上添加注解

@EnableTransactionManagement

在需要事务控制的方法添加@Transactional注解

这种方式问题是,我们需要在方法上添加注解,这样处理起来特别麻烦。

我们可以使用XML方式配置,配置好后,方法不需要加注解,这样我们使用起来就不需要再管注解的事情。

1.添加transaction.xml 

这样我们只需只要在编写事务代码的时候遵循上面的规则,编写方法名称,就可以对事务进行拦截。

2.在启动类上引入此配置文件。

@SpringBootApplication@ImportResource("classpath:transaction.xml")@MapperScan({
"com.neo.dao"}) public class DemoApplication {

这样springboot 就可以支持事务管理了。

3.测试事务是否生效

public void create(SaleOrder order){        orderDao.create(order);        throw new RuntimeException("出错了") ;    }

编写代码如下,在添加后抛出异常,发现数据并没有真正的插入。

 

注意事项:

使用事务需要引入:

com.alibaba
fastjson
1.2.46

打印事务日志:

logging:  level:     com.neo.dao: debug     org.springframework.jdbc: debug

日志执行情况:

2018-10-16 23:17:17.702 DEBUG 9640 --- [nio-8000-exec-1] o.s.j.d.DataSourceTransactionManager     : Creating new transaction with name [com.neo.service.SaleOrderService.create]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT,-Exception2018-10-16 23:17:17.708 DEBUG 9640 --- [nio-8000-exec-1] o.s.j.d.DataSourceTransactionManager     : Acquired Connection [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@7f9c9817] for JDBC transaction2018-10-16 23:17:17.713 DEBUG 9640 --- [nio-8000-exec-1] o.s.j.d.DataSourceTransactionManager     : Switching JDBC Connection [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@7f9c9817] to manual commit2018-10-16 23:17:17.754 DEBUG 9640 --- [nio-8000-exec-1] com.neo.dao.SaleOrderDao.create          : ==>  Preparing: INSERT INTO SALE_ORDER (ID_,NAME_,TOTAL_,CREATOR_,CREATE_TIME_) VALUES (?, ?, ?, ?, ?) 2018-10-16 23:17:17.782 DEBUG 9640 --- [nio-8000-exec-1] com.neo.dao.SaleOrderDao.create          : ==> Parameters: 1539703037695(String), zyg(String), 33.0(Double), AA(String), null2018-10-16 23:17:17.784 DEBUG 9640 --- [nio-8000-exec-1] com.neo.dao.SaleOrderDao.create          : <==    Updates: 12018-10-16 23:17:17.785 DEBUG 9640 --- [nio-8000-exec-1] o.s.j.d.DataSourceTransactionManager     : Initiating transaction rollback2018-10-16 23:17:17.785 DEBUG 9640 --- [nio-8000-exec-1] o.s.j.d.DataSourceTransactionManager     : Rolling back JDBC transaction on Connection [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@7f9c9817]2018-10-16 23:17:17.786 DEBUG 9640 --- [nio-8000-exec-1] o.s.j.d.DataSourceTransactionManager     : Releasing JDBC Connection [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@7f9c9817] after transaction2018-10-16 23:17:17.787 DEBUG 9640 --- [nio-8000-exec-1] o.s.jdbc.datasource.DataSourceUtils      : Returning JDBC Connection to DataSource2018-10-16 23:17:17.797 ERROR 9640 --- [nio-8000-exec-1] o.a.c.c.C.[.[.[.[dispatcherServlet]      : Servlet.service() for servlet [dispatcherServlet] in context with path [/demo] threw exception [Request processing failed; nested exception is java.lang.RuntimeException: 出错了] with root cause

 

转载于:https://www.cnblogs.com/yg_zhang/p/9801359.html

你可能感兴趣的文章
重建索引提高SQL Server性能<转>
查看>>
大公司的流量变现
查看>>
Linux进程管理(2)
查看>>
将eclipse中项目的Text File Encoding设置成为GBK
查看>>
对control file的学习笔记
查看>>
JavaScript与有限状态机
查看>>
Sharepoint 2010 以及Office 2010 RTM
查看>>
php优化
查看>>
jQuery之each方法
查看>>
RequireJS源码初探
查看>>
【hibernate】 hibernate的主键策略
查看>>
单表代替密码原理及算法实现
查看>>
如何让VS检查函数和类Comment的添加情况
查看>>
Linq案例
查看>>
23.3. 身份证校验
查看>>
web开发未解之谜
查看>>
制作播放视频关灯效果
查看>>
【POI】解析xls报错:java.util.zip.ZipException: error in opening zip file
查看>>
我的第一个Node web程序
查看>>
【IntelliJ Idea】idea下hibernate反向生成工具,根据数据表生成实体
查看>>