zoukankan      html  css  js  c++  java
  • ruoyi(springboot)项目 druid 连接池配置多个数据源

    为了容易区分,最好把不同数据库的代码放到不同目录下

    1.首先修改 application-druid.yml

    druid:
                # 主库数据源
                master:
                    url: jdbc:mysql://localhost:3306/ry
                    username: root
                    password: 123456
                # 从库数据源
                slave:#名称可以自定义,但是要记得代码里保持一致
                    enabled: true#这属性不是必须的,但是建议加上,方便切换
                    url: jdbc:mysql://localhost:3306/db
                    username: root
                    password: 123456

    2.在DataSourceType类添加数据源枚举

    public enum DataSourceType
    {
        MASTER,
        SLAVE //和druid.yml文件里保持一致
    }

    3.在DruidConfig配置读取数据源

    @Bean
    @ConfigurationProperties("spring.datasource.druid.slave")
    @ConditionalOnProperty(prefix = "spring.datasource.druid.slave", name = "enabled", havingValue = "true")
    public DataSource slaveDataSource(DruidProperties druidProperties)
    {
        DruidDataSource dataSource = DruidDataSourceBuilder.create().build();
        return druidProperties.dataSource(dataSource);
    }

    4.在DruidConfig类dataSource方法添加数据源

        @Bean(name = "dynamicDataSource")
        @Primary
        public DynamicDataSource dataSource(DataSource masterDataSource)
        {
            Map<Object, Object> targetDataSources = new HashMap<>();
            targetDataSources.put(DataSourceType.MASTER.name(), masterDataSource);
            setDataSource(targetDataSources, DataSourceType.SLAVE.name(), "slaveDataSource");
            return new DynamicDataSource(masterDataSource, targetDataSources);
        }

    5.在需要使用多数据源方法或类上添加@DataSource注解,其中value用来表示数据源

    @Service@DataSource(value = DataSourceType.SLAVE)
    public class SysUserServiceImpl{
        // 优先级:先方法,后类,如果方法覆盖了类上的数据源类型,以方法的为准,否则以类上的为准
        @Service@DataSource(value = DataSourceType.MASTER)
        public List<SysUser> selectUserList(SysUser user){
            ...
        }    
    }
  • 相关阅读:
    [LeetCode] Best Time to Buy and Sell Stock
    [LeetCode] Generate Parentheses
    [LeetCode] Best Time to Buy and Sell Stock 2
    [CareerCup][Google Interview] 打印组合
    [微软][笔试] 找出最大序列对
    系统之间的接口测试
    进销存业务的自定义分解
    查找数据库中所有有自增列的用户表
    由创建文件想起的。。。
    反编译想到的代码安全问题
  • 原文地址:https://www.cnblogs.com/fengbol/p/15544661.html
Copyright © 2011-2022 走看看