栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

记一次springboot2.1.6配置(mysql)多数据源

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

记一次springboot2.1.6配置(mysql)多数据源

pom.xml



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.6.RELEASE
         
    
    com.example
    demo
    0.0.1-SNAPSHOT
    demo
    Demo project for Spring Boot
    
        1.8
    
    
        
            org.springframework.boot
            spring-boot-starter
        

        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        
        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        

        
            mysql
            mysql-connector-java
            8.0.16
        

        
            org.springframework.boot
            spring-boot-starter-web
            
                
                    
                    
                
            
        

        
        
            com.alibaba
            druid-spring-boot-starter
            1.1.22
        

        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            2.0.1
        

        
            junit
            junit
        

        
        
            org.aspectj
            aspectjrt
            1.9.7
        

        
        
            org.aspectj
            aspectjweaver
            1.9.7
        


    



    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    
                        
                            org.projectlombok
                            lombok
                        
                    
                
            
        
    


项目结构图

yml文件

server:
  port: 8086

mybatis:
  mapperLocations: classpath*:mapper
public class DynamicDataSource extends AbstractRoutingDataSource {
    private static final Logger LOGGER = LoggerFactory.getLogger(DynamicDataSource.class);

    private static final ThreadLocal DATA_SOURCE_KEY = new ThreadLocal<>();

    static void changeDataSource(String dataSourceKey) {
        DATA_SOURCE_KEY.set(dataSourceKey);
    }

    static void clearDataSource() {
        DATA_SOURCE_KEY.remove();
    }

    @Override
    protected Object determineCurrentLookupKey() {
        String key = DATA_SOURCE_KEY.get();
        LOGGER.info("切换数据源为: {}", key);
        return key;
    }
}

4、java配置数据源

package com.example.demo.config;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;

import javax.sql.DataSource;
import java.util.HashMap;
import java.util.Map;


@Configuration
public class MultiDataSource {

    public static final String TB1 = "tb1";
    public static final String TB2 = "tb2";
    public static final String TB3 = "tb3";

    @Bean(name = MultiDataSource.TB1)
    @ConfigurationProperties(prefix = "spring.datasource.db1")
    public DataSource tb1() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = MultiDataSource.TB2)
    @ConfigurationProperties(prefix = "spring.datasource.db2")
    public DataSource tb2() {
        return DataSourceBuilder.create().build();
    }
    @Bean(name = MultiDataSource.TB3)
    @ConfigurationProperties(prefix = "spring.datasource.db3")
    public DataSource tb3() {
        return DataSourceBuilder.create().build();
    }

    @Primary
    @Bean(name = "dynamicDataSource")
    public DynamicDataSource dataSource() {
        DynamicDataSource dynamicDataSource = new DynamicDataSource();
        dynamicDataSource.setDefaultTargetDataSource(tb1());
        Map dataSourceMap = new HashMap<>(4);
        dataSourceMap.put(TB1, tb1());
        dataSourceMap.put(TB2, tb2());
        dataSourceMap.put(TB3, tb3());
        dynamicDataSource.setTargetDataSources(dataSourceMap);
        return dynamicDataSource;
    }
}
最最主要的是:在service的实现类上面加上注解,下面看我是怎么加的  完事了 ,直接启动,请求:

 项目引入jar包图

这个是我自己经过网上东拼西凑,所得的结果,因为网上别人说的不怎么全,现在自己弄出来想记录一下。如果对你们有帮助,那我写这个就更加有意义了 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/459807.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号