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){
            ...
        }    
    }
  • 相关阅读:
    win中使用curl上传文件报错
    S2-052
    S2-048
    S2-045、S2-046
    S2-033、S2-037
    S2-032
    S2-029
    day12-python之深灰魔法
    day10-11-python基础之字符串
    day09-python基础
  • 原文地址:https://www.cnblogs.com/fengbol/p/15544661.html
Copyright © 2011-2022 走看看