RuoYi/src/main/java/com/ruoyi/framework/config/DruidConfig.java

48 lines
1.7 KiB
Java
Raw Normal View History

2018-07-09 08:44:52 +08:00
package com.ruoyi.framework.config;
2018-08-06 09:00:12 +08:00
import java.util.HashMap;
import java.util.Map;
2018-07-09 08:44:52 +08:00
import javax.sql.DataSource;
2018-08-06 09:00:12 +08:00
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.ConfigurationProperties;
2018-07-09 08:44:52 +08:00
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
2018-08-06 09:00:12 +08:00
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
import com.ruoyi.framework.aspectj.lang.constant.DataSourceName;
import com.ruoyi.framework.datasource.DynamicDataSource;
2018-07-09 08:44:52 +08:00
/**
2018-08-06 09:00:12 +08:00
* druid 配置多数据源
2018-07-09 08:44:52 +08:00
*
* @author ruoyi
*/
@Configuration
public class DruidConfig
{
2018-08-06 09:00:12 +08:00
@Bean
@ConfigurationProperties("spring.datasource.druid.master")
public DataSource masterDataSource()
2018-07-09 08:44:52 +08:00
{
2018-08-06 09:00:12 +08:00
return DruidDataSourceBuilder.create().build();
2018-07-09 08:44:52 +08:00
}
@Bean
2018-08-06 09:00:12 +08:00
@ConfigurationProperties("spring.datasource.druid.slave")
@ConditionalOnProperty(prefix = "spring.datasource.druid.slave", name = "open", havingValue = "true")
public DataSource slaveDataSource()
2018-07-09 08:44:52 +08:00
{
2018-08-06 09:00:12 +08:00
return DruidDataSourceBuilder.create().build();
2018-07-09 08:44:52 +08:00
}
2018-08-06 09:00:12 +08:00
@Bean(name = "dynamicDataSource")
@Primary
public DynamicDataSource dataSource(DataSource masterDataSource, DataSource slaveDataSource)
2018-07-09 08:44:52 +08:00
{
2018-08-06 09:00:12 +08:00
Map<Object, Object> targetDataSources = new HashMap<>();
targetDataSources.put(DataSourceName.MASTER, masterDataSource);
targetDataSources.put(DataSourceName.SLAVE, slaveDataSource);
return new DynamicDataSource(masterDataSource, targetDataSources);
2018-07-09 08:44:52 +08:00
}
}