大家好,今天小辉就讲一下Spring的事务。事务百度上的解释是
这个事务解释很明确哈就是要做的或所做的事情,在数据库中其实就是你要执行的语句,你要执行多少条语句,这些语句顺序怎样执行的你都可以通过事务来控制,事务还有一个特性就是可以后悔,对已经执行的语句进行回滚,(小辉开车中:想拥有这个特性呢)。转回来 ,Spring 事务其实就是对数据库事务的支持了。Spring 事务的隔离级别和数据库中的隔离级别是相对应的。但是Spring事务有声明式和编程式,小辉就讲一下注解声明式,aop声明式事务和编程式局部事务,(由于很多都开始使用Java配置类替换xml,xml现在就不讲了哦,),这里我分的声明式和编程式主要式通过和业务代码的解耦情况来分的,如果有更好的理解欢迎提出哦。
1.注解声明式事务:
其实声明式事务注解在Spring boot项目中可以快速实现,在启动类上加上注解@EnableTransactionManagement,
这就是开启了Spring事务,事务开启肯定式在数据源的基础上嘛,配置文件里面加上数据源的配置就可以了
下面式简单的使用:
(写在方法的上面)
/** * 作用在方法上方法自定有回滚 */ @GetMapping(value = "addBlogFailToMethod") @Transactional public void addBlogFailToMethod() { Blog blog = new Blog("测试文章ToMethod", "书法家深刻搭街坊昆仑山大家快乐的数据库", "描述"); try { blogDao.save(blog); int i = 1 / 0; log.info("新增数据成功,id={}", blog.getId()); } catch (Exception e) { log.error("Blog新增异常事务回滚:id={}", blog.getId()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); } }
(写在类的上面)
@RestController // 根据需求自定义配置回滚还是提交。。。 @Transactional(rollbackFor = Exception.class) public class BaseController { }
只要继承了这个类,抛出异常就会进行事务回滚(事务的传di性),括号里面的属性根据自己的需求进行配置就OK了
但是注解的方法必须是public修改。如果是类上写注解那么只会作用在public修饰的方