暂时保存
This commit is contained in:
+1
@@ -65,6 +65,7 @@ public class BrowserSecurityConfig extends WebSecurityConfigurerAdapter {
|
||||
* 需要注入数据源
|
||||
*/
|
||||
@Autowired
|
||||
@Qualifier("dynamicDataSource")
|
||||
private DataSource dataSource;
|
||||
|
||||
@Autowired
|
||||
|
||||
+4
-4
@@ -13,13 +13,13 @@ import org.springframework.core.type.AnnotatedTypeMetadata;
|
||||
* @version 1.0
|
||||
* @since 1.0
|
||||
*/
|
||||
public class SlaveDataSourceCondition implements Condition {
|
||||
private static final Logger logger = LoggerFactory.getLogger(SlaveDataSourceCondition.class);
|
||||
public class MasterDataSourceCondition implements Condition {
|
||||
private static final Logger logger = LoggerFactory.getLogger(MasterDataSourceCondition.class);
|
||||
@Override
|
||||
public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
|
||||
Environment environment = conditionContext.getEnvironment();
|
||||
//判断环境中是否有从数据库的配置
|
||||
logger.info("是否包含从数据库: {}",environment.containsProperty("spring.datasource.druid.slave.username"));
|
||||
return environment.containsProperty("spring.datasource.druid.slave.username");
|
||||
logger.info("是否使用默认主从数据库配置: {}",environment.containsProperty("spring.datasource.druid.master.username"));
|
||||
return environment.containsProperty("spring.datasource.druid.master.username");
|
||||
}
|
||||
}
|
||||
+3
-8
@@ -1,7 +1,7 @@
|
||||
package com.micro.fast.common.config;
|
||||
|
||||
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
|
||||
import com.micro.fast.common.condition.SlaveDataSourceCondition;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Conditional;
|
||||
@@ -14,19 +14,14 @@ import javax.sql.DataSource;
|
||||
* @author lsy
|
||||
*/
|
||||
@Configuration
|
||||
@AutoConfigureBefore(com.micro.fast.common.config.DynamicDataSourceConfig.class)
|
||||
public class DruidDataSourceConfig {
|
||||
|
||||
@Primary
|
||||
@Bean(name = DynamicDataSourceConfig.MASTER_DATA_SOURCE)
|
||||
@ConfigurationProperties("spring.datasource.druid.master")
|
||||
@Conditional(com.micro.fast.common.condition.MasterDataSourceCondition.class)
|
||||
public DataSource masterDataSource(){
|
||||
return DruidDataSourceBuilder.create().build();
|
||||
}
|
||||
|
||||
@Bean(name = DynamicDataSourceConfig.SLAVE_DATA_SOURCE)
|
||||
@ConfigurationProperties("spring.datasource.druid.slave")
|
||||
@Conditional(SlaveDataSourceCondition.class)
|
||||
public DataSource slaveDataSource(){
|
||||
return DruidDataSourceBuilder.create().build();
|
||||
}
|
||||
}
|
||||
|
||||
+35
-24
@@ -1,6 +1,6 @@
|
||||
package com.micro.fast.common.config;
|
||||
|
||||
import com.micro.fast.common.dao.DataSourceContextHolder;
|
||||
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure;
|
||||
import com.micro.fast.common.dao.DynamicDataSource;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
@@ -9,6 +9,7 @@ import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Primary;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.sql.DataSource;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
@@ -21,26 +22,25 @@ import java.util.Map;
|
||||
* @since 1.0
|
||||
*/
|
||||
@Configuration
|
||||
@AutoConfigureBefore({SqlSessionFactoryConfig.class})
|
||||
@AutoConfigureBefore({SqlSessionFactoryConfig.class, DruidDataSourceAutoConfigure.class})
|
||||
public class DynamicDataSourceConfig {
|
||||
public static final String SLAVE = "slave";
|
||||
public static final String MASTER = "master";
|
||||
public static final String SLAVE_DATA_SOURCE = "slaveDataSource";
|
||||
public static final String MASTER_DATA_SOURCE = "masterDataSource";
|
||||
public static final String DATA_SOURCE = "dataSource";
|
||||
|
||||
/**
|
||||
* 当ataSource存在时
|
||||
* 当dataSource存在时
|
||||
*/
|
||||
@Autowired
|
||||
@Qualifier(MASTER_DATA_SOURCE)
|
||||
private DataSource masterDataSource;
|
||||
@Resource(name = DATA_SOURCE)
|
||||
private DataSource dataSource;
|
||||
|
||||
/**
|
||||
* 从数据源
|
||||
*/
|
||||
@Autowired(required = false)
|
||||
@Qualifier(SLAVE_DATA_SOURCE)
|
||||
private DataSource slaveDataSource;
|
||||
@Qualifier(MASTER_DATA_SOURCE)
|
||||
private DataSource masterDataSource;
|
||||
|
||||
/**
|
||||
* 收集所有的datasource
|
||||
@@ -48,27 +48,38 @@ public class DynamicDataSourceConfig {
|
||||
@Autowired
|
||||
private Map<String,DataSource> dataSourceMap;
|
||||
|
||||
@Bean(name = "dynamicDataSource")
|
||||
@Bean(name = "dataSource")
|
||||
@Primary
|
||||
public DataSource dynamicDataSource(){
|
||||
//动态数据源对象
|
||||
DynamicDataSource dynamicDataSource = new DynamicDataSource();
|
||||
//设置默认数据源
|
||||
dynamicDataSource.setDefaultTargetDataSource(masterDataSource);
|
||||
//配置多数据源
|
||||
Map<Object,Object> dataSourceMap = new HashMap<>();
|
||||
//根据数据源存在情况调整动态数据源配置
|
||||
dataSourceMap.put(MASTER,masterDataSource);
|
||||
if (slaveDataSource!=null){
|
||||
dataSourceMap.put(SLAVE,slaveDataSource);
|
||||
if (masterDataSource==null){
|
||||
//设置默认数据源
|
||||
dynamicDataSource.setDefaultTargetDataSource(dataSource);
|
||||
dataSourceMap.put(MASTER,dataSource);
|
||||
this.dataSourceMap.forEach((key,value) -> {
|
||||
if ( !DATA_SOURCE.equals(key)
|
||||
&& !MASTER.equals(key)){
|
||||
dataSourceMap.put(key,value);
|
||||
}
|
||||
});
|
||||
}else{
|
||||
//设置默认数据源
|
||||
dynamicDataSource.setDefaultTargetDataSource(masterDataSource);
|
||||
//根据数据源存在情况调整动态数据源配置
|
||||
dataSourceMap.put(MASTER,masterDataSource);
|
||||
dataSourceMap.put(SLAVE,dataSource);
|
||||
this.dataSourceMap.forEach((key,value) -> {
|
||||
if (!DATA_SOURCE.equals(key)
|
||||
&&!MASTER_DATA_SOURCE.equals(key)
|
||||
&& !MASTER.equals(key)
|
||||
&& !SLAVE.equals(key)){
|
||||
dataSourceMap.put(key,value);
|
||||
}
|
||||
});
|
||||
}
|
||||
this.dataSourceMap.forEach((key,value) -> {
|
||||
if (!SLAVE_DATA_SOURCE.equals(key)
|
||||
&& !MASTER_DATA_SOURCE.equals(key)
|
||||
&& !MASTER.equals(key)
|
||||
&& !SLAVE.equals(key)){
|
||||
dataSourceMap.put(key,value);
|
||||
}
|
||||
});
|
||||
dynamicDataSource.setTargetDataSources(dataSourceMap);
|
||||
return dynamicDataSource;
|
||||
}
|
||||
|
||||
+2
-2
@@ -20,6 +20,7 @@ import org.springframework.transaction.PlatformTransactionManager;
|
||||
import org.springframework.transaction.annotation.EnableTransactionManagement;
|
||||
import org.springframework.transaction.annotation.TransactionManagementConfigurer;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.sql.DataSource;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
@@ -39,8 +40,7 @@ public class SqlSessionFactoryConfig implements TransactionManagementConfigurer{
|
||||
/**
|
||||
* 数据源对象
|
||||
*/
|
||||
@Autowired
|
||||
@Qualifier("dynamicDataSource")
|
||||
@Resource(name = "dynamicDataSource")
|
||||
private DataSource dynamicDataSource;
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,13 +1,16 @@
|
||||
package com.micro.fast.ucenter;
|
||||
|
||||
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure;
|
||||
import org.mybatis.spring.annotation.MapperScan;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||
import org.springframework.cloud.client.SpringCloudApplication;
|
||||
import org.springframework.cloud.netflix.feign.EnableFeignClients;
|
||||
|
||||
@SpringCloudApplication
|
||||
@EnableFeignClients
|
||||
@MapperScan(basePackages = {"com.micro.fast.ucenter.dao"})
|
||||
@EnableAutoConfiguration(exclude = DruidDataSourceAutoConfigure.class)
|
||||
public class UcenterApplication {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
@@ -10,6 +10,55 @@ spring:
|
||||
enabled: true
|
||||
username: config
|
||||
password: server
|
||||
datasource:
|
||||
username: root
|
||||
password: studyj2e
|
||||
url: jdbc:mysql://127.0.0.1:3317/micro?useUncoide=true&chracterEncoding=utf-8&useSSL=false
|
||||
druid:
|
||||
master:
|
||||
initial-size: 19
|
||||
username: root
|
||||
password: studyj2e
|
||||
url: jdbc:mysql://127.0.0.1:3317/micro?useUncoide=true&chracterEncoding=utf-8&useSSL=false
|
||||
# 数据源共用基本配置
|
||||
driver-class-name: com.mysql.jdbc.Driver
|
||||
initial-size: 20
|
||||
max-active: 50
|
||||
min-idle: 10
|
||||
max-wait: 1000
|
||||
pool-prepared-statements: true
|
||||
test-on-borrow: true
|
||||
test-while-idle: true
|
||||
time-between-log-stats-millis: 10000
|
||||
min-evictable-idle-time-millis: 100000
|
||||
max-evictable-idle-time-millis: 200000
|
||||
default-auto-commit: true
|
||||
filters: stat,wall
|
||||
# url监控配置
|
||||
web-stat-filter:
|
||||
enabled: true
|
||||
url-pattern: /*
|
||||
exclusions: /static/*,/druid/*
|
||||
session-stat-enable: false
|
||||
stat-view-servlet:
|
||||
login-username: micro
|
||||
login-password: fast
|
||||
reset-enable: true
|
||||
allow: 127.0.0.1,172.17.0.1
|
||||
deny: 127.0.0.2
|
||||
enabled: true
|
||||
url-pattern: /druid/*
|
||||
# aop拦截监控
|
||||
aop-patterns: com.micro.*
|
||||
# statFilter配置
|
||||
filter:
|
||||
stat:
|
||||
connection-stack-trace-enable: true
|
||||
db-type: mysql
|
||||
enabled: true
|
||||
log-slow-sql: true
|
||||
merge-sql: true
|
||||
slow-sql-millis: 2000
|
||||
eureka:
|
||||
client:
|
||||
serviceUrl:
|
||||
|
||||
Reference in New Issue
Block a user