springboot手工创建 提交事务
在Spring Boot中,可以通过使用@Transactional注解来提交事务。@Transactional注解可以应用在类级别或方法级别上。
首先,确保在你的项目中已经添加了spring-boot-starter-data-jpa依赖。然后,在需要提交事务的方法上添加@Transactional注解。
例如,假设你有一个UserService类,其中包含一个保存用户的方法saveUser:
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
@Transactional
public void saveUser(User user) {
userRepository.save(user);
}
}
在上面的例子中,saveUser方法被注解为@Transactional,当调用该方法时,Spring Boot会自动为该方法开启一个事务,并在方法执行完成后自动提交事务。
需要注意的是,@Transactional注解默认会将运行时异常(RuntimeException)或错误(Error)触发回滚操作。如果你想自定义回滚策略,可以使用@Transactional注解的rollbackFor属性。
@Transactional(rollbackFor = Exception.class)
public void saveUser(User user) {
// ...
}
在上面的例子中,saveUser方法在遇到任何异常时都会触发事务回滚,包括运行时异常和受检异常。
另外,还可以使用@Transactional注解的propagation属性来定义事务的传播行为。传播行为可以控制方法在调用其他带有事务的方法时,是否使用同一个事务。
@Transactional(propagation = Propagation.REQUIRED)
public void saveUser(User user) {
// ...
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void updateUser(User user) {
// ...
}
在上面的例子中,saveUser方法使用REQUIRED传播行为,意味着如果当前上下文中已经存在一个事务,那么saveUser方法将加入该事务;如果不存在事务,那么saveUser方法将创建一个新事务。
而updateUser方法使用REQUIRES_NEW传播行为,意味着无论当前上下文中是否存在事务,updateUser方法都将创建一个新的事务。
这只是一些事务相关的基本操作,你可以根据实际需求进行更多的配置和定制
原文地址: http://www.cveoy.top/t/topic/iz3t 著作权归作者所有。请勿转载和采集!