1、在service类上面添加注解@Transactional,在这个注解里面可以配置事务相关参数
2、propagation:事务传播行为![](https://img-blog.csdnimg.cn/6eac6cea1628462a9800a178322fe2cb.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6auY6ZW_57uz,size_20,color_FFFFFF,t_70,g_se,x_16)
注:前两个传播行为 REQUIRED、REQUIRED_NEW 用的多,后五个用的少
3、isolation:事务隔离级别![](https://img-blog.csdnimg.cn/29d9d8c1a15247b3bf3fed9a7c92d080.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6auY6ZW_57uz,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/abfc356e2fdb4899a02b5e2ee5695ebc.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6auY6ZW_57uz,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/e79364b601a24c68a2559a00c8a19945.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6auY6ZW_57uz,size_20,color_FFFFFF,t_70,g_se,x_16)
其中repeatable_read为MYSQL数据库默认隔离级别
4、timeout:超时时间
5、readOnly:是否只读
6、rollbackFor:回滚
7、noRollbackFor:不回滚
配置展示:(@Transactional注解之后的参数)
@Service(value = "zr")
@Transactional(propagation = Propagation.REQUIRED,
isolation = Isolation.REPEATABLE_READ,
timeout = -1,
readOnly = false) //事务操作的注解
public class ZRService {
//注入Dao
@Autowired
private ZRDao zrDao;
//转账的业务操作
public void accountMoney() {
//苗小牛-1000
zrDao.reduceMoney();
//异常的方法
int b = 100/0;
//苗小鸡+1000
zrDao.addMoney();
}
}