在Spring Boot中,實現事務有以下幾種方法:
@Transactional
注解在需要事務管理的方法上,Spring Boot會自動開啟事務、提交事務或回滾事務。@Service
public class UserService {
@Autowired
private UserRepository userRepository;
@Transactional
public void saveUser(User user) {
userRepository.save(user);
}
}
@EnableTransactionManagement
注解啟用事務管理,并在配置文件中配置事務管理器。@Configuration
@EnableTransactionManagement
public class TransactionConfig {
@Bean
public DataSourceTransactionManager transactionManager(DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
}
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public void saveUser(User user) {
userRepository.save(user);
}
}
TransactionTemplate
類手動控制事務的開始、提交和回滾。@Service
public class UserService {
@Autowired
private TransactionTemplate transactionTemplate;
@Autowired
private UserRepository userRepository;
public void saveUser(User user) {
transactionTemplate.execute(new TransactionCallbackWithoutResult() {
protected void doInTransactionWithoutResult(TransactionStatus status) {
userRepository.save(user);
}
});
}
}
以上是常用的三種實現事務的方法,根據具體情況選擇適合的方法。