<dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>5.3.9</version> </dependency> <dependency> <groupId>com.atomikos</groupId> <artifactId>transactions</artifactId> <version>4.0.6</version> </dependency> @Configuration @EnableTransactionManagement public class TransactionConfig { @Bean public PlatformTransactionManager transactionManager() { JtaTransactionManager transactionManager = new JtaTransactionManager(); transactionManager.setTransactionManager(atomikosTransactionManager()); transactionManager.setUserTransaction(atomikosUserTransaction()); return transactionManager; } @Bean(destroyMethod = "shutdownForce") public UserTransaction atomikosUserTransaction() { UserTransactionImp userTransaction = new UserTransactionImp(); userTransaction.setTransactionTimeout(300); return userTransaction; } @Bean(destroyMethod = "close") public TransactionManager atomikosTransactionManager() { AtomikosTransactionManager transactionManager = new AtomikosTransactionManager(); transactionManager.setForceShutdown(false); transactionManager.setTransactionTimeout(300); return transactionManager; } } @Service public class UserService { @Autowired private UserRepository userRepository; @Transactional public void createUser(User user) { userRepository.save(user); } @Transactional public void deleteUser(int userId) { userRepository.deleteById(userId); } } @Configuration public class DataSourceConfig { @Bean public DataSource dataSource() { AtomikosDataSourceBean dataSource = new AtomikosDataSourceBean(); dataSource.setUniqueResourceName("myDataSource"); dataSource.setXaDataSourceClassName("com.mysql.cj.jdbc.MysqlXADataSource"); dataSource.setXaProperties(buildProperties()); return dataSource; } private Properties buildProperties() { Properties properties = new Properties(); properties.setProperty("URL", "jdbc:mysql://localhost:3306/mydb"); properties.setProperty("user", "root"); properties.setProperty("password", "password"); return properties; } } @Transactional(isolation = Isolation.READ_COMMITTED, propagation = Propagation.REQUIRED) public void updateUser(User user) { userRepository.save(user); }


上一篇:
下一篇:
切换中文