新建一个类DynamicDataSourceInjection将多数据源主动注入到Spring容器中

package com.ciih.authcenter.client.config.mybatisplus;

import com.ejlchina.searcher.boot.NamedDataSource;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;

import javax.sql.DataSource;

/**
 * 因其他框架也要用到多数据源,所以这里主动将多数据暴露到Spring容器的外层。
 *
 * @author Lenovo
 */
@Configuration
public class DynamicDataSourceInjection {

    @Bean(name = "mastermysql")
    @Primary
    @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.mastermysql")
    public DataSourceProperties masterMysql() {
        return new DataSourceProperties();
    }

    @Bean(name = "slave1")
    @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.slave1")
    public DataSourceProperties datasource1() {
        return new DataSourceProperties();
    }

    @Bean(name = "slave2")
    @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.slave2")
    public DataSourceProperties datasource2() {
        return new DataSourceProperties();
    }


    @Bean
    public NamedDataSource userNamedDataSource(@Qualifier("slave1") DataSourceProperties dataSourceProperties) {
        DataSource dataSource = dataSourceProperties.initializeDataSourceBuilder().build();
        // 具名数据源:com.ejlchina.searcher.boot.NamedDataSource
        return new NamedDataSource("slave1", dataSource);
    }

    @Bean
    public NamedDataSource orderNamedDataSource(@Qualifier("slave2") DataSourceProperties dataSourceProperties) {
        DataSource dataSource = dataSourceProperties.initializeDataSourceBuilder().build();
        // 具名数据源:com.ejlchina.searcher.boot.NamedDataSource
        return new NamedDataSource("slave2", dataSource);
    }
}

Bean Searcher中使用:

 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐