@Transactional注解标注方法的事务提交时间点是什么?
spring中@transactional注解的事务提交时间点
问题:
使用@transactional注解标注的方法执行前后,事务提交的时间点是何时?
回答:
spring中使用@transactional注解标注的方法,事务的提交时间点是在方法执行结束后。
spring采用动态代理的方式对加了@transactional注解的方法进行增强,在方法执行前添加事务,并在方法执行完成后提交事务。因此,事务的提交时间点确实是在方法结束时。
解决方法:
如果需要在方法执行前开启事务,可以在方法中手动获取事务,然后再调用带@transactional注解的方法。
lock(); transactionTemplate.execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus transactionStatus) { method(); } }); unlock();
以上就是@Transactional注解标注方法的事务提交时间点是什么?的详细内容,更多请关注其它相关文章!