service层@Transactional事务控制使用以及注意
来源:互联网 发布:软件项目管理发展前景 编辑:程序博客网 时间:2024/06/11 18:28
@Service@Transactionalpublic class CeshiService { @Autowired LoginFeignClient loginFeignClient; @Transactional(rollbackFor = Exception.class) public void test(){ User user=null; //try { log.info("ceshi transactional is 1"); user=loginFeignClient.test1().getData(); throw new RuntimeException(); //log.info("ceshi transactional is 2"); // loginFeignClient.test(); // }catch (Exception e){ // throw new Exception(e.getLocalizedMessage()); // } }}
上述就是一个事务的service,当获取到throw的exception时执行rollback;
1.service中是通过feign调用远程服务时,上述写法是无法回滚的,只有repository在本地代码处理才可以,因为db提供了回滚处理。
2.如果是feign远程调用,又想使用事务,则需要进行逆服务处理,需要获取异常时,手动调用逆服务处理
3.非事务声明方法调用事务声明方法,则事务失效。使用了@Transactional的方法,对同一个类里面的方法调用, @Transactional无效。比如有一个类Test,它的一个方法A,A再调用Test本类的方法B(不管B是否public还是private),但A没有声明注解事务,而B有。则外部调用A之后,B的事务是不会起作用的。(经常在这里出错)
4.一个service中声明事务方法,调用了另外一个service中的声明事务方法,则被调用的方法事务也还起作用,事务不太建议放到2个见service中。下面的例子,下面的事务是起作用的,跟上面第3条写的注意区分:
阅读全文
0 0
- service层@Transactional事务控制使用以及注意
- 使用Spring中的 @Transactional注解控制事务
- @Transactional注解事务回滚在控制层不起作用
- @Transactional数据事务控制
- spring4之service层事务控制
- jdbcTemplate的service层控制事务
- @Transactional事务几点注意
- @Transactional事务几点注意
- @Transactional事务几点注意
- @Transactional事务几点注意
- 在grails的服务中使用@Transactional来控制事务
- 使用Spring(13)Spring与MyBatis整合(二)DataSourceTransactionManage把事务控制在Service层
- service层处理事务
- 使用@Transactional需要注意的
- spring 事务管理——回滚之service层(事务控制层)代码互调
- spring 事务管理——回滚之service层(事务控制层)代码互调
- transactional放置在service层还是controller层
- 在使用spring mvc时,我使用了@Service这样的注解, 发现使用注解@Transactional声明的事务不起作用
- 集合框架Map的一些基本用法
- netstat查看端口状态及分析
- 删除servlet
- hdu 6216 规律+二分
- I2C总线浅谈之(三)---以C语言实例分析IIC
- service层@Transactional事务控制使用以及注意
- Maven下SSM项目整合笔记05:查询并分页展示
- 下载servlet
- sql多表查询效率提升实战
- MAC下添加添加Lib文件,实现自动提示功能
- EA&UML日拱一卒-活动图::14.2 Behavior StateMachines (6)
- SpringBoot的日志管理
- 打印欧拉路径问题 hihoCoder
- bgp