个人使用 Spring Boot学习笔记(十一)SpringBoot 整合 jdbcTemplate(附带工程源码)的工程进行展示
一、Spring boot 声明式使用(@Transactional)
声明式事务配置参考
事物配置中有哪些属性可以配置?以下只是简单的使用参考(详细解释可见 什么是事务?事务的概念解释)
- 事务的传播性:
@Transactional(propagation=Propagation.REQUIRED)
- 事务的隔离级别:
@Transactional(isolation = Isolation.READ_UNCOMMITTED)
(此等级读取未提交数据(会出现脏读, 不可重复读) 基本不使用) - 只读:
@Transactional(readOnly=true)
该属性用于设置当前事务是否为只读事务,设置为true表示只读,false则表示可读写,默认值为false。 - 事务的超时性:
@Transactional(timeout=30)
- 回滚:
指定单一异常类:@Transactional(rollbackFor=RuntimeException.class)
指定多个异常类:@Transactional(rollbackFor={RuntimeException.class, Exception.class})
该属性用于设置需要进行回滚的异常类数组,当方法中抛出指定异常数组中的异常时,则进行事务回滚。
注解事务@Transactional
@Transactional 放在Service 的接口层即可
我们修改一下@Service的实现类
@Service
@Transactional
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
public int add(UserEntity user) {
int returnDao = userDao.add(user);
// 此处强制出错,可发现已经执行了userDao.add,此时已经向数据库添加了数据,但由于是事务会回滚
System.out.println(1/0);
return returnDao;
}
}
Controller
@RestController
@RequestMapping("/api")
public class Controller {
@Autowired
private UserService userService;