SpringMVC 手动控制事务提交 --各种坑
来源:互联网 发布:linux lsof 编辑:程序博客网 时间:2024/06/05 16:25
在springmvc的开发中,有个比较扯的东西,就是当你在代码中新开了一个线程,那么这个线程里面将不会有事物的存在.
1至于为何不会有事物的存在: 因为我们的事物都是有springmvc统一管理,而你新开了个线程,并没有提交给springmvc进行统一的管理.所以,如果没有手动申明,是不会有事物的存在的.
解决..
这样就可以提供事物支持了..
在需要加事务的方法上加上
DataSourceTransactionManager transactionManager = (DataSourceTransactionManager) ctx
.getBean("txManager");
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW); // 事物隔离级别,开启新事务,这样会比较安全些。
TransactionStatus status = transactionManager.getTransaction(def); // 获得事务状态
try {
//逻辑代码,可以写上你的逻辑处理代码
transactionManager.commit(status);
} catch (Exception e) {
transactionManager.rollback(status);
}
ApplicationContext 不存在的情况下
@Autowired
private DataSourceTransactionManager txManager;
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);// 事物隔离级别,开启新事务
TransactionStatus status = txManager.getTransaction(def); // 获得事务状态
try{
//逻辑代码,可以写上你的逻辑处理代码
txManager.commit(status);
}catch(Exception e){
txManager.rollback(status);
}
在这里,其实还有另外一个坑
特别需要注意,如果这里开启了事物.没有提交,也没有回滚,没有关闭,
这个时候,服务器并不会抛出什么异常, 刚开始运行也不会有什么错误,一切运行皆正常,
当这个事物开启到一定程度后,服务器就会像死了一样,不处理其他的事物, 但是又没有挂,
反正当时很诡异,当初我们找了好久,才想起就改了这个地方, 特意写上这里,下次千万注意!!
所以,当开启了事物后,一定要提交或者关闭,或者回滚.....
- SpringMVC 手动控制事务提交 --各种坑
- SpringMVC 手动控制事务提交
- SpringMVC 手动控制事务提交
- SpringMVC 手动控制事务提交
- springmvc mybatis 手动提交事务
- SpringMvc+mybatis手动开启和提交事务
- 获取ApplicationContext的方法及手动控制事务提交
- Spring 手动提交事务
- 手动控制事务
- spring手动事务控制
- SpringMvc Dao jdbcTemplate设置不自动提交(手动提交)(适用商品抢购等事务)
- Java-SpringMVC事务提交
- connection的手动提交事务
- Spring+Mybatis 手动控制事务
- 【Oracle】使用bbed手动提交事务
- 事务的手动提交 jdbc Template
- JSP---网上商城->手动提交事务,保证数据一致性
- spring手动开启、提交、回滚事务
- LeetCode-74-Search a 2D Matrix 二维二分
- IO流
- 面向对象一些重点
- Leetcode-Remove Duplicates from Sorted Array
- AndroidStudio中使用Git-初级篇(一)——从github上传和下载项目(by 星空武哥)
- SpringMVC 手动控制事务提交 --各种坑
- HDU 1113 Word Amalgamation 《map》
- Qt生成或解析二维码
- linux dstat,slurm,ccze 安装
- php curl常用的5个例子
- linux安装微软雅黑等字体
- 飞思卡尔Kinetis系列单片机被锁住后,怎么解锁
- js 动态创建div并向其中添加元素
- 初学html