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

Spring Boot 手动创建事务:深入理解@Transactional 注解

原文地址: https://www.cveoy.top/t/topic/qg6n 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录