ruoyi(spring-boot)項目 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){
        ...
    }    
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM