@Transactional注解标注方法的事务提交时间点是什么?

@transactional注解标注方法的事务提交时间点是什么?

spring中@transactional注解的事务提交时间点

问题:

使用@transactional注解标注的方法执行前后,事务提交的时间点是何时?

回答:

spring中使用@transactional注解标注的方法,事务的提交时间点是在方法执行结束后。

spring采用动态代理的方式对加了@transactional注解的方法进行增强,在方法执行前添加事务,并在方法执行完成后提交事务。因此,事务的提交时间点确实是在方法结束时。

解决方法:

如果需要在方法执行前开启事务,可以在方法中手动获取事务,然后再调用带@transactional注解的方法。

lock();
transactionTemplate.execute(new TransactionCallbackWithoutResult() {
    @Override
    protected void doInTransactionWithoutResult(TransactionStatus transactionStatus) {
        method();
    }
});
unlock();

以上就是@Transactional注解标注方法的事务提交时间点是什么?的详细内容,更多请关注其它相关文章!