这一节在之前的代码中验证一下事务是否可以回滚
抛出Exception
修改之前UserServiceImpl类的addUser方法如下,在该方法中抛出一个Exception:
@Override
public void addUser(User user) throws Exception {
userDao.addUser(user);
throw new Exception();
}
此时事务是不会回滚的,因为默认情况下只有发生运行时异常之后spring才会进行事务的回滚,而这里抛出的Exception显然不是运行时异常。此时可以在方法上加入如下注解来设置当发生Exception之后会进行回滚:
@Transactional(rollbackFor = {Exception.class})
抛出RuntimeException
修改之前UserServiceImpl类的addUser方法如下,在该方法中抛出一个RuntimeException:
@Override
public void addUser(User user) throws Exception {
userDao.addUser(user);
throw new RuntimeException();
}
因为抛出了运行时异常,所以此时spring会进行事务回滚操作。
需要注意的是倘若在方法中捕获异常的话,那么会导致事务不会回滚:
@Override
public void addUser(User user) {
userDao.addUser(