0
点赞
收藏
分享

微信扫一扫

@Transactional注解在同一个类中的方法之间调用不生效

科牛 2022-01-24 阅读 110

解决方法1:

将事务方法放到另一个类中(或者单独开启一层,取名“事务层”)进行调用,即符合了在对象之间调用的条件。

解决方法2:

获取本对象的代理对象,再进行调用。具体操作如:

  1. Spring-content.xml上下文中,增加配置:<aop:aspectj-autoproxy expose-proxy=“true”/>

  2. 在xxxServiceImpl中,用(xxxService)(AopContext.currentProxy()),获取到xxxService的代理类,再调用事务方法,强行经过代理类,激活事务切面。

解决方法3:

很多时候,方法内调用又希望激活事务,是由于同一个方法既有DAO操作又有I/O等耗时操作,不想让耗时的I/O造成事务的太长耗时(比如新增商品同时需要写入库存)。此时,可以将I/O做成异步操作(如加入线程池),而加入线程池的操作即便加入事务也不会导致事务太长,问题可以迎刃而解。

解决方法4:

用@Autowired 注入自己 然后在用注入的bean调用自己的方法也可以

转载:
分析spring事务@Transactional注解在同一个类中的方法之间调用不生效的原因及解决方案

举报

相关推荐

0 条评论