| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- /**
- * Copyright (c) 2018 yiidata.com All rights reserved.
- *
- * http://yiidata.com
- *
- *
- */
- package com.yiidata.intergration.web.datasource.config;
- import com.alibaba.druid.pool.DruidDataSource;
- import com.yiidata.intergration.web.datasource.properties.DataSourceProperties;
- import com.yiidata.intergration.web.datasource.properties.DynamicDataSourceProperties;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.boot.context.properties.ConfigurationProperties;
- import org.springframework.boot.context.properties.EnableConfigurationProperties;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import java.util.HashMap;
- import java.util.Map;
- /**
- * 配置多数据源
- *
- * @author zhenqin
- */
- @Configuration
- @EnableConfigurationProperties(DynamicDataSourceProperties.class)
- public class DynamicDataSourceConfig {
- @Autowired
- private DynamicDataSourceProperties properties;
- @Bean
- @ConfigurationProperties(prefix = "spring.datasource.druid")
- public DataSourceProperties dataSourceProperties() {
- return new DataSourceProperties();
- }
- @Bean
- public DynamicDataSource dynamicDataSource(DataSourceProperties dataSourceProperties) {
- DynamicDataSource dynamicDataSource = new DynamicDataSource();
- //默认数据源
- DruidDataSource defaultDataSource = DynamicDataSourceFactory.buildDruidDataSource(dataSourceProperties);
- dynamicDataSource.setDefaultTargetDataSource(defaultDataSource);
- // 绑定的第三方数据源
- final Map<Object, Object> dynamicDataSource1 = getDynamicDataSource();
- dynamicDataSource.setTargetDataSources(dynamicDataSource1);
- dynamicDataSource1.put("default", defaultDataSource);
- return dynamicDataSource;
- }
- private Map<Object, Object> getDynamicDataSource(){
- Map<String, DataSourceProperties> dataSourcePropertiesMap = properties.getDatasource();
- Map<Object, Object> targetDataSources = new HashMap<>(dataSourcePropertiesMap.size() + 1);
- dataSourcePropertiesMap.forEach((name, ds) -> {
- DruidDataSource druidDataSource = DynamicDataSourceFactory.buildDruidDataSource(ds);
- targetDataSources.put(name, druidDataSource);
- });
- return targetDataSources;
- }
- }
|