最近工作中遇到需要管理多个数据源,因此使用了atomikos写了一个小模块,采用了注释实现了灵活配置多数据源。使用的项目只需要在启动类上使用@EnableFreeagerAtomikos加上配置文件的配置项就可以了。(gitee代码:https://gitee.com/freeager/springboot-atomikos ,包括了测试代码,数据库看mapper自己建哦)
看代码就明白实现思路了:
1、自定义注释:
@Target({ ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Import({ FreeagerAtomikosRegistrar.class,
TransactionManagerConfig.class })
public @interface EnableFreeagerAtomikos {
String[] dataSource();
}
2、事务管理配置:
@Configuration
@EnableTransactionManagement
@Order(100)
public class TransactionManagerConfig {
@Bean(name = "userTransaction")
public UserTransaction userTransaction() throws Throwable {
UserTransactionImp userTransactionImp = new UserTransactionImp();
userTransactionImp.setTransactionTimeout(10000);
return userTransactionImp;
}
@Bean(name = "atomikosTransactionManager", initMethod = "init", destroyMethod = "close")
public UserTransactionManager atomikosTransactionManager() throws Throwable {
// atomikos事务管理
UserTransactionManager userTransactionManager = new UserTransactionManager();
userTransactionManager.setForceShutdown(false);
return userTransactionManager;
}
@Bean(name = "transactionManager")
&#