spring事务 的传播行为PROPAGATION_REQUIRES_NEW:,及其代码示例
时间: 2023-08-16 19:05:53 浏览: 159
spring事务管理几种方式代码实例
PROPAGATION_REQUIRES_NEW 是 Spring 事务传播行为中的一种,表示如果当前存在事务,则挂起该事务,创建一个新的事务并在新的事务中执行方法;如果当前不存在事务,则直接创建一个新的事务并在新的事务中执行方法。
下面是一个简单的示例代码:
```java
@Service
@Transactional
public class UserService {
@Autowired
private UserDao userDao;
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void saveUser(User user) {
userDao.save(user);
}
}
```
在上面的代码中,UserService 的 saveUser 方法被标记为 @Transactional(propagation = Propagation.REQUIRES_NEW),表示在执行该方法时,如果当前存在事务,则挂起该事务,创建一个新的事务并在新的事务中执行 userDao.save(user) 方法;如果当前不存在事务,则直接创建一个新的事务并在新的事务中执行 userDao.save(user) 方法。
需要注意的是,PROPAGATION_REQUIRES_NEW 传播行为会将当前事务挂起,因此在执行完 saveUser 方法后,上层调用者所在的事务仍然是挂起状态,需要等待 saveUser 方法所在的事务结束才能继续执行。因此,在使用 PROPAGATION_REQUIRES_NEW 传播行为时需要慎重考虑。
阅读全文