Spring多数据源 多事务处理

因项目业务需要同时连接两个数据库,同时需要事务支持,参考网上资料试过实现spring接口来自动切换数据源,但是事务只有一个数据源可以使用,故采用如下方式配置,扫描所有map文件,通过类上方注解区分使用哪个数据源,通过在service方法中配置@Transactional(value=“事务名”)来判断使用哪个事务。
一、数据源配置

1、添加两个数据源


    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    
    
    
    
    
    
    
    


    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    
    
    
    
    
    
    
    

2、配置两个工厂指向不同的datasource


    


    

3、配置对应的mapper扫描,其中属性annotationClass配置自定义注解类用于区分哪些mapper使用A数据源,哪些mapper使用B数据源,同时需要在对应的mapper接口类上方配置对应的注解


    
    
    
    


    
    
    
    

4、注解类内容

@Target({ ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
public @interface ADataSource {
}

@Target({ ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
public @interface BDataSource {
}
二、配置事务

1、添加两个事务,事务分别指向不同的数据源

 




    


    

2、至此多数据源配置已经完成,在service中使用时只需要在各个方法上添加注解就可以了

@Transactional(“ADataSource”)
public void add() {
//TODO
}

参考文献:https://blog.csdn.net/finnson/article/details/81061834

你可能感兴趣的:(Spring多数据源 多事务处理)