Spring多数据源数据的配置、自动加载配置

1、配置类代码

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;

import javax.sql.DataSource;
import java.sql.SQLException;
@Configuration
@EnableAutoConfiguration
public class DbsourceConfig {

@Value("${spring.datasource.driver-class-name}")
private String driverClassName;
@Value("${spring.datasource.initialSize}")
private int initialSize;
@Value("${spring.datasource.minIdle}")
private int minIdle;
@Value("${spring.datasource.maxActive}")
private int maxActive;
@Value("${spring.datasource.maxWait}")
private int maxWait;
@Value("${spring.datasource.timeBetweenEvictionRunsMillis}")
private int timeBetweenEvictionRunsMillis;
@Value("${spring.datasource.minEvictableIdleTimeMillis}")
private int minEvictableIdleTimeMillis;
@Value("${spring.datasource.validationQuery}")
private String validationQuery;
@Value("${spring.datasource.testWhileIdle}")
private boolean testWhileIdle;
@Value("${spring.datasource.testOnBorrow}")
private boolean testOnBorrow;
@Value("${spring.datasource.testOnReturn}")
private boolean testOnReturn;
@Value("${spring.datasource.poolPreparedStatements}")
private boolean poolPreparedStatements;
@Value("${spring.datasource.maxPoolPreparedStatementPerConnectionSize}")
private int maxPoolPreparedStatementPerConnectionSize;
@Value("${spring.datasource.filters}")
private String filters;
@Value("${spring.datasource.connectionProperties}")
private String connectionProperties;
@Value("${spring.datasource.useGlobalDataSourceStat}")
private boolean useGlobalDataSourceStat;


/*******************************数据源1*******************/
@Value("${spring.datasource.url}")
private String dbUrl;
@Value("${spring.datasource.username}")
private String username;
@Value("${spring.datasource.password}")
private String password;
/*******************************数据源2*******************/
@Value("${spring.datasource.finance.url}")
private String financeDbUrl;
@Value("${spring.datasource.finance.username}")
private String financeUsername;
@Value("${spring.datasource.finance.password}")
private String financePassword;






@Bean(name = "usersdataSource")     //声明其为Bean实例
                  //在同样的DataSource中,首先使用被标注的DataSource
public DataSource dataSource(){
    DruidDataSource datasource = new DruidDataSource();
    datasource.setUrl(this.dbUrl);
    datasource.setUsername(username);
    datasource.setPassword(password);
    datasource.setDriverClassName(driverClassName);
    //configuration
    datasource.setInitialSize(initialSize);
    datasource.setMinIdle(minIdle);
    datasource.setMaxActive(maxActive);
    datasource.setMaxWait(maxWait);
    datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
    datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
    datasource.setValidationQuery(validationQuery);
    datasource.setTestWhileIdle(testWhileIdle);
    datasource.setTestOnBorrow(testOnBorrow);
    datasource.setTestOnReturn(testOnReturn);
    datasource.setPoolPreparedStatements(poolPreparedStatements);
    datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);
    datasource.setUseGlobalDataSourceStat(useGlobalDataSourceStat);
    try {
        datasource.setFilters(filters);
    } catch (SQLException e) {
        System.err.println("druid configuration initialization filter: "+ e);
    }
    datasource.setConnectionProperties(connectionProperties);
    return datasource;
}


/**
 * mysql数据 jdbc连接
 * @return
 */
@Bean(name = "jdbcOperation")
public JdbcTemplate getGraphicDataDS(@Qualifier("usersdataSource") DataSource dataSource){
    return new JdbcTemplate(dataSource, true);

}







/****************************  数据源2   *****************************/

@Bean(name = "financeDataSource")     //声明其为Bean实例
public DataSource financeDataSource(){
    DruidDataSource datasource = new DruidDataSource();
    datasource.setUrl(this.financeDbUrl);
    datasource.setUsername(this.financeUsername);
    datasource.setPassword(this.financePassword);
    datasource.setDriverClassName(driverClassName);
    datasource.setInitialSize(initialSize);
    datasource.setMinIdle(minIdle);
    datasource.setMaxActive(maxActive);
    datasource.setMaxWait(maxWait);
    datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
    datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
    datasource.setValidationQuery(validationQuery);
    datasource.setTestWhileIdle(testWhileIdle);
    datasource.setTestOnBorrow(testOnBorrow);
    datasource.setTestOnReturn(testOnReturn);
    datasource.setPoolPreparedStatements(poolPreparedStatements);
    datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);
    datasource.setUseGlobalDataSourceStat(useGlobalDataSourceStat);
    try {
        datasource.setFilters(filters);
    } catch (SQLException e) {
        System.err.println("druid configuration initialization filter: "+ e);
    }
    datasource.setConnectionProperties(connectionProperties);
    return datasource;
}

@Bean(name = "financejdbc")
public JdbcTemplate getFinanceDS(@Qualifier("financeDataSource") DataSource dataSource) {
    return new JdbcTemplate(dataSource,true);
}


/**
 * 业务hana源
 * 原来是从数据库中读取的配置现在把他抽取出来,
 * 因为基本业务类型确定后基本不会改变而且这种方式构造连接池不方便也没有必要
 *
 * @return
 */
@Bean(name = "serviceHanaDataSource")
@Qualifier("serviceHanaDataSource")
@ConfigurationProperties(prefix = "service.hana.datasource")
public DataSource getServiceHanaDataSource() {
    return DataSourceBuilder.create().build();
}

@Bean(name = "serviceHanaJdbcTemplate")
public JdbcTemplate getServiceHanaJdbcTemplate(@Qualifier("serviceHanaDataSource") DataSource dataSource) {
    return new JdbcTemplate(dataSource);
}

}

使用时直接
@Resource
private JdbcTemplate financejdbc;
@Autowired
private JdbcTemplate jdbcOperation;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值