feat: release 2.4.1
This commit is contained in:
parent
10cb533d54
commit
93173befeb
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,4 +1,4 @@
|
||||
*/target/
|
||||
target/
|
||||
!.mvn/wrapper/maven-wrapper.jar
|
||||
|
||||
### STS ###
|
||||
|
@ -1,3 +1,7 @@
|
||||
# v2.4.1
|
||||
- 修复了上个版本hikari不兼容1.5.x的BUG。
|
||||
- 提供了hikari全局属性的配置。
|
||||
|
||||
# v2.4.0
|
||||
- 重构了druid配置。
|
||||
- 支持了更多druid参数配置,支持了加密。
|
||||
|
68
README.md
68
README.md
@ -279,20 +279,82 @@ spring:
|
||||
username: root
|
||||
password: 123456
|
||||
driver-class-name: com.mysql.jdbc.Driver
|
||||
url: jdbc:mysql://47.100.20.186:3306/dynamic?characterEncoding=utf8&useSSL=false
|
||||
url: jdbc:mysql://xx.xx.xx.xx:3306/dynamic?characterEncoding=utf8&useSSL=false
|
||||
druid: # 以下参数针对每个库可以重新设置druid参数
|
||||
initial-size:
|
||||
validation-query: select 1 FROM DUAL #比如oracle就需要重新设置这个
|
||||
public-key: #(非全局参数)设置即表示启用加密,底层会自动帮你配置相关的连接参数和filter。
|
||||
# ......
|
||||
|
||||
|
||||
# 生成 publickey 和密码
|
||||
# java -cp druid-1.1.10.jar com.alibaba.druid.filter.config.ConfigTools youpassword
|
||||
```
|
||||
|
||||
如上即可配置访问用户和密码,访问 http://localhost:8080/druid/index.html 查看druid监控。
|
||||
|
||||
## 集成 HikariCP
|
||||
|
||||
HikariCP官方地址 https://github.com/brettwooldridge/HikariCP 。
|
||||
|
||||
SpringBoot 2.+ 默认引入了HikariCP,除非对版本有要求无需再次引入。
|
||||
|
||||
使用SpringBoot 1.5.x的版本需手动引入,对应的版本参考官方地址。
|
||||
|
||||
```yaml
|
||||
spring:
|
||||
datasource:
|
||||
dynamic:
|
||||
hikari: # 全局hikariCP参数,所有值和默认保持一致。(现已支持的参数如下,不清楚含义不要乱设置)
|
||||
catalog:
|
||||
connection-timeout:
|
||||
validation-timeout:
|
||||
idle-timeout:
|
||||
leak-detection-threshold:
|
||||
max-lifetime:
|
||||
max-pool-size:
|
||||
min-idle:
|
||||
initialization-fail-timeout:
|
||||
connection-init-sql:
|
||||
connection-test-query:
|
||||
dataSource-class-name:
|
||||
dataSource-jndi-name:
|
||||
schema:
|
||||
transaction-isolation-name:
|
||||
is-auto-commit:
|
||||
is-read-only:
|
||||
is-isolate-internal-queries:
|
||||
is-register-mbeans:
|
||||
is-allow-pool-suspension:
|
||||
data-source-properties: #以下属性仅为演示(默认不会引入)
|
||||
serverTimezone: Asia/Shanghai
|
||||
characterEncoding: utf-8
|
||||
useUnicode: true
|
||||
useSSL: false
|
||||
autoReconnect: true
|
||||
cachePrepStmts: true
|
||||
prepStmtCacheSize: 250
|
||||
prepStmtCacheSqlLimit: 2048
|
||||
useServerPrepStmts: true
|
||||
useLocalSessionState: true
|
||||
rewriteBatchedStatements: true
|
||||
cacheResultSetMetadata: true
|
||||
cacheServerConfiguration: true
|
||||
elideSetAutoCommits: true
|
||||
maintainTimeStats: false
|
||||
allowPublicKeyRetrieval: true
|
||||
health-check-properties:
|
||||
datasource:
|
||||
master:
|
||||
username: root
|
||||
password: 123456
|
||||
driver-class-name: com.mysql.jdbc.Driver
|
||||
url: jdbc:mysql://xx.xx.xx.xx:3306/dynamic?characterEncoding=utf8&useSSL=false
|
||||
hikari: # 以下参数针对每个库可以重新设置hikari参数
|
||||
max-pool-size:
|
||||
idle-timeout:
|
||||
# ......
|
||||
```
|
||||
|
||||
## 集成 MybatisPlus
|
||||
|
||||
只要进入mybatisPlus相关jar包,项目自动集成。 兼容mybatisPlus 2.x和3.x的版本。
|
||||
@ -316,7 +378,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
|
||||
|
||||
p6sy大部分人最常用的功能就是格式化你的sql语句。
|
||||
|
||||
```mysql
|
||||
```sql
|
||||
# 如在使用mybatis的过程中,原生输出的语句是带?号的。在需要复制到其他地方执行看效果的时候很不方便。
|
||||
select * from user where age>?
|
||||
# 在使用了p6sy后,其会帮你格式化成真正的执行语句。
|
||||
|
6
pom.xml
6
pom.xml
@ -12,7 +12,7 @@
|
||||
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
|
||||
<version>2.4.0</version>
|
||||
<version>2.4.1</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>dynamic-datasource-spring-boot-starter</name>
|
||||
@ -84,8 +84,8 @@
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.zaxxer</groupId>
|
||||
<artifactId>HikariCP</artifactId>
|
||||
<version>2.7.0</version>
|
||||
<artifactId>HikariCP-java7</artifactId>
|
||||
<version>2.4.13</version>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
@ -15,7 +15,7 @@
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>mybatis-plus-boot-starter</artifactId>
|
||||
<version>3.0.3</version>
|
||||
<version>3.0.6</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
@ -40,7 +40,7 @@
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
|
||||
<version>2.3.7</version>
|
||||
<version>2.4.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
|
@ -19,6 +19,7 @@ package com.baomidou.dynamic.datasource;
|
||||
import com.alibaba.druid.pool.DruidDataSource;
|
||||
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty;
|
||||
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.druid.DruidConfig;
|
||||
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.hikari.HikariCpConfig;
|
||||
import com.zaxxer.hikari.HikariConfig;
|
||||
import com.zaxxer.hikari.HikariDataSource;
|
||||
import lombok.Setter;
|
||||
@ -72,7 +73,7 @@ public class DynamicDataSourceCreator {
|
||||
private DruidConfig druidGlobalConfig;
|
||||
|
||||
@Setter
|
||||
private HikariConfig globalHikariConfig;
|
||||
private HikariCpConfig hikariGlobalConfig;
|
||||
|
||||
public DynamicDataSourceCreator() {
|
||||
Class<?> builderClass = null;
|
||||
@ -173,15 +174,16 @@ public class DynamicDataSourceCreator {
|
||||
*/
|
||||
public DataSource createDruidDataSource(DataSourceProperty dataSourceProperty) {
|
||||
DruidDataSource dataSource = new DruidDataSource();
|
||||
dataSource.setName(dataSourceProperty.getPollName());
|
||||
dataSource.setUrl(dataSourceProperty.getUrl());
|
||||
dataSource.setUsername(dataSourceProperty.getUsername());
|
||||
dataSource.setPassword(dataSourceProperty.getPassword());
|
||||
dataSource.setUrl(dataSourceProperty.getUrl());
|
||||
dataSource.setDriverClassName(dataSourceProperty.getDriverClassName());
|
||||
dataSource.setName(dataSourceProperty.getPollName());
|
||||
|
||||
DruidConfig config = dataSourceProperty.getDruid();
|
||||
dataSource.configFromPropety(config.toProperties(druidGlobalConfig));
|
||||
|
||||
//连接参数单独设置
|
||||
dataSource.setConnectProperties(config.getConnectionProperties());
|
||||
//设置druid内置properties不支持的的参数
|
||||
Boolean testOnReturn = config.getTestOnReturn() == null ? druidGlobalConfig.getTestOnReturn() : config.getTestOnReturn();
|
||||
if (testOnReturn != null && testOnReturn.equals(true)) {
|
||||
@ -217,22 +219,16 @@ public class DynamicDataSourceCreator {
|
||||
*
|
||||
* @param dataSourceProperty 数据源参数
|
||||
* @return 数据源
|
||||
* @author 离世庭院
|
||||
* @author 离世庭院 小锅盖
|
||||
*/
|
||||
public DataSource createHikariDataSource(DataSourceProperty dataSourceProperty) {
|
||||
HikariConfig hikariConfig = dataSourceProperty.getHikari();
|
||||
if (hikariConfig == null) {
|
||||
//自己没设置就copy全局参数
|
||||
hikariConfig.copyState(globalHikariConfig);
|
||||
}
|
||||
hikariConfig.setJdbcUrl(dataSourceProperty.getUrl());
|
||||
hikariConfig.setUsername(dataSourceProperty.getUsername());
|
||||
hikariConfig.setPassword(dataSourceProperty.getPassword());
|
||||
hikariConfig.setDriverClassName(dataSourceProperty.getDriverClassName());
|
||||
//暂时不支持设置监控
|
||||
// hikariConfig.setMetricRegistry(metricRegistry);
|
||||
// hikariConfig.setHealthCheckRegistry(healthCheckRegistry);
|
||||
hikariConfig.setPoolName(dataSourceProperty.getPollName());
|
||||
return new HikariDataSource(hikariConfig);
|
||||
HikariCpConfig hikariCpConfig = dataSourceProperty.getHikari();
|
||||
HikariConfig config = hikariCpConfig.toHikariConfig(hikariGlobalConfig);
|
||||
config.setUsername(dataSourceProperty.getUsername());
|
||||
config.setPassword(dataSourceProperty.getPassword());
|
||||
config.setJdbcUrl(dataSourceProperty.getUrl());
|
||||
config.setDriverClassName(dataSourceProperty.getDriverClassName());
|
||||
config.setPoolName(dataSourceProperty.getPollName());
|
||||
return new HikariDataSource(config);
|
||||
}
|
||||
}
|
||||
|
@ -17,7 +17,7 @@
|
||||
package com.baomidou.dynamic.datasource.spring.boot.autoconfigure;
|
||||
|
||||
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.druid.DruidConfig;
|
||||
import com.zaxxer.hikari.HikariConfig;
|
||||
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.hikari.HikariCpConfig;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.springframework.boot.context.properties.NestedConfigurationProperty;
|
||||
@ -70,5 +70,5 @@ public class DataSourceProperty {
|
||||
* HikariCp参数配置
|
||||
*/
|
||||
@NestedConfigurationProperty
|
||||
private HikariConfig hikari = new HikariConfig();
|
||||
private HikariCpConfig hikari = new HikariCpConfig();
|
||||
}
|
||||
|
@ -71,7 +71,7 @@ public class DynamicDataSourceAutoConfiguration {
|
||||
public DynamicDataSourceCreator dynamicDataSourceCreator() {
|
||||
DynamicDataSourceCreator dynamicDataSourceCreator = new DynamicDataSourceCreator();
|
||||
dynamicDataSourceCreator.setDruidGlobalConfig(properties.getDruid());
|
||||
dynamicDataSourceCreator.setGlobalHikariConfig(properties.getHikari());
|
||||
dynamicDataSourceCreator.setHikariGlobalConfig(properties.getHikari());
|
||||
return dynamicDataSourceCreator;
|
||||
}
|
||||
|
||||
|
@ -17,9 +17,9 @@
|
||||
package com.baomidou.dynamic.datasource.spring.boot.autoconfigure;
|
||||
|
||||
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.druid.DruidConfig;
|
||||
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.hikari.HikariCpConfig;
|
||||
import com.baomidou.dynamic.datasource.strategy.DynamicDataSourceStrategy;
|
||||
import com.baomidou.dynamic.datasource.strategy.LoadBalanceDynamicDataSourceStrategy;
|
||||
import com.zaxxer.hikari.HikariConfig;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
|
||||
@ -71,5 +71,5 @@ public class DynamicDataSourceProperties {
|
||||
* HikariCp全局参数配置
|
||||
*/
|
||||
@NestedConfigurationProperty
|
||||
private HikariConfig hikari = new HikariConfig();
|
||||
private HikariCpConfig hikari = new HikariCpConfig();
|
||||
}
|
||||
|
@ -26,7 +26,7 @@ import java.util.Properties;
|
||||
import static com.alibaba.druid.pool.DruidAbstractDataSource.*;
|
||||
|
||||
/**
|
||||
* Druid常用参数
|
||||
* Druid参数配置
|
||||
*
|
||||
* @author TaoYu
|
||||
* @since 1.2.0
|
||||
@ -66,7 +66,7 @@ public class DruidConfig {
|
||||
private Boolean initGlobalVariants;
|
||||
private Boolean useUnfairLock;
|
||||
private Boolean killWhenSocketReadTimeout;
|
||||
private String connectionProperties;
|
||||
private Properties connectionProperties;
|
||||
private Integer maxPoolPreparedStatementPerConnectionSize;
|
||||
private String initConnectionSqls;
|
||||
private Boolean sharePreparedStatements;
|
||||
@ -75,169 +75,168 @@ public class DruidConfig {
|
||||
|
||||
private String publicKey;
|
||||
|
||||
public Properties toProperties(DruidConfig config) {
|
||||
public Properties toProperties(DruidConfig globalConfig) {
|
||||
Properties properties = new Properties();
|
||||
Integer initialSize = this.initialSize == null ? config.getInitialSize() : this.initialSize;
|
||||
if (initialSize != null && !initialSize.equals(DEFAULT_INITIAL_SIZE)) {
|
||||
properties.setProperty("druid.initialSize", String.valueOf(initialSize));
|
||||
Integer tempInitialSize = initialSize == null ? globalConfig.getInitialSize() : initialSize;
|
||||
if (tempInitialSize != null && !tempInitialSize.equals(DEFAULT_INITIAL_SIZE)) {
|
||||
properties.setProperty("druid.initialSize", String.valueOf(tempInitialSize));
|
||||
}
|
||||
|
||||
Integer maxActive = this.maxActive == null ? config.getMaxActive() : this.maxActive;
|
||||
if (maxActive != null && !maxActive.equals(DEFAULT_MAX_WAIT)) {
|
||||
properties.setProperty("druid.maxActive", String.valueOf(maxActive));
|
||||
Integer tempMaxActive = maxActive == null ? globalConfig.getMaxActive() : maxActive;
|
||||
if (tempMaxActive != null && !tempMaxActive.equals(DEFAULT_MAX_WAIT)) {
|
||||
properties.setProperty("druid.maxActive", String.valueOf(tempMaxActive));
|
||||
}
|
||||
|
||||
Integer minIdle = this.minIdle == null ? config.getMinIdle() : this.minIdle;
|
||||
if (minIdle != null && !minIdle.equals(DEFAULT_MIN_IDLE)) {
|
||||
properties.setProperty("druid.minIdle", String.valueOf(minIdle));
|
||||
Integer tempMinIdle = minIdle == null ? globalConfig.getMinIdle() : minIdle;
|
||||
if (tempMinIdle != null && !tempMinIdle.equals(DEFAULT_MIN_IDLE)) {
|
||||
properties.setProperty("druid.minIdle", String.valueOf(tempMinIdle));
|
||||
}
|
||||
|
||||
Long maxWait = this.maxWait == null ? config.getMaxWait() : this.maxWait;
|
||||
if (maxWait != null && !maxWait.equals(DEFAULT_MAX_WAIT)) {
|
||||
properties.setProperty("druid.maxWait", String.valueOf(maxWait));
|
||||
Long tempMaxWait = maxWait == null ? globalConfig.getMaxWait() : maxWait;
|
||||
if (tempMaxWait != null && !tempMaxWait.equals(DEFAULT_MAX_WAIT)) {
|
||||
properties.setProperty("druid.maxWait", String.valueOf(tempMaxWait));
|
||||
}
|
||||
|
||||
Long timeBetweenEvictionRunsMillis = this.timeBetweenEvictionRunsMillis == null ? config.getTimeBetweenEvictionRunsMillis() : this.timeBetweenEvictionRunsMillis;
|
||||
if (timeBetweenEvictionRunsMillis != null && !timeBetweenEvictionRunsMillis.equals(DEFAULT_TIME_BETWEEN_EVICTION_RUNS_MILLIS)) {
|
||||
properties.setProperty("druid.timeBetweenEvictionRunsMillis", String.valueOf(timeBetweenEvictionRunsMillis));
|
||||
Long tempTimeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis == null ? globalConfig.getTimeBetweenEvictionRunsMillis() : timeBetweenEvictionRunsMillis;
|
||||
if (tempTimeBetweenEvictionRunsMillis != null && !tempTimeBetweenEvictionRunsMillis.equals(DEFAULT_TIME_BETWEEN_EVICTION_RUNS_MILLIS)) {
|
||||
properties.setProperty("druid.timeBetweenEvictionRunsMillis", String.valueOf(tempTimeBetweenEvictionRunsMillis));
|
||||
}
|
||||
|
||||
Long timeBetweenLogStatsMillis = this.timeBetweenLogStatsMillis == null ? config.getTimeBetweenLogStatsMillis() : this.timeBetweenLogStatsMillis;
|
||||
if (timeBetweenLogStatsMillis != null && timeBetweenLogStatsMillis > 0) {
|
||||
properties.setProperty("druid.timeBetweenLogStatsMillis", String.valueOf(timeBetweenLogStatsMillis));
|
||||
Long tempTimeBetweenLogStatsMillis = timeBetweenLogStatsMillis == null ? globalConfig.getTimeBetweenLogStatsMillis() : timeBetweenLogStatsMillis;
|
||||
if (tempTimeBetweenLogStatsMillis != null && tempTimeBetweenLogStatsMillis > 0) {
|
||||
properties.setProperty("druid.timeBetweenLogStatsMillis", String.valueOf(tempTimeBetweenLogStatsMillis));
|
||||
}
|
||||
|
||||
Integer statSqlMaxSize = this.statSqlMaxSize == null ? config.getStatSqlMaxSize() : this.statSqlMaxSize;
|
||||
if (statSqlMaxSize != null) {
|
||||
properties.setProperty("druid.stat.sql.MaxSize", String.valueOf(statSqlMaxSize));
|
||||
Integer tempStatSqlMaxSize = statSqlMaxSize == null ? globalConfig.getStatSqlMaxSize() : statSqlMaxSize;
|
||||
if (tempStatSqlMaxSize != null) {
|
||||
properties.setProperty("druid.stat.sql.MaxSize", String.valueOf(tempStatSqlMaxSize));
|
||||
}
|
||||
|
||||
Long minEvictableIdleTimeMillis = this.minEvictableIdleTimeMillis == null ? config.getMinEvictableIdleTimeMillis() : this.minEvictableIdleTimeMillis;
|
||||
if (minEvictableIdleTimeMillis != null && !minEvictableIdleTimeMillis.equals(DEFAULT_MIN_EVICTABLE_IDLE_TIME_MILLIS)) {
|
||||
properties.setProperty("druid.minEvictableIdleTimeMillis", String.valueOf(minEvictableIdleTimeMillis));
|
||||
Long tempMinEvictableIdleTimeMillis = minEvictableIdleTimeMillis == null ? globalConfig.getMinEvictableIdleTimeMillis() : minEvictableIdleTimeMillis;
|
||||
if (tempMinEvictableIdleTimeMillis != null && !tempMinEvictableIdleTimeMillis.equals(DEFAULT_MIN_EVICTABLE_IDLE_TIME_MILLIS)) {
|
||||
properties.setProperty("druid.minEvictableIdleTimeMillis", String.valueOf(tempMinEvictableIdleTimeMillis));
|
||||
}
|
||||
|
||||
Long maxEvictableIdleTimeMillis = this.maxEvictableIdleTimeMillis == null ? config.getMaxEvictableIdleTimeMillis() : this.maxEvictableIdleTimeMillis;
|
||||
if (maxEvictableIdleTimeMillis != null && !maxEvictableIdleTimeMillis.equals(DEFAULT_MAX_EVICTABLE_IDLE_TIME_MILLIS)) {
|
||||
properties.setProperty("druid.maxEvictableIdleTimeMillis", String.valueOf(maxEvictableIdleTimeMillis));
|
||||
Long tempMaxEvictableIdleTimeMillis = maxEvictableIdleTimeMillis == null ? globalConfig.getMaxEvictableIdleTimeMillis() : maxEvictableIdleTimeMillis;
|
||||
if (tempMaxEvictableIdleTimeMillis != null && !tempMaxEvictableIdleTimeMillis.equals(DEFAULT_MAX_EVICTABLE_IDLE_TIME_MILLIS)) {
|
||||
properties.setProperty("druid.maxEvictableIdleTimeMillis", String.valueOf(tempMaxEvictableIdleTimeMillis));
|
||||
}
|
||||
|
||||
Boolean testWhileIdle = this.testWhileIdle == null ? config.getTestWhileIdle() : this.testWhileIdle;
|
||||
if (testWhileIdle != null && !testWhileIdle.equals(DEFAULT_WHILE_IDLE)) {
|
||||
Boolean tempTestWhileIdle = testWhileIdle == null ? globalConfig.getTestWhileIdle() : testWhileIdle;
|
||||
if (tempTestWhileIdle != null && !tempTestWhileIdle.equals(DEFAULT_WHILE_IDLE)) {
|
||||
properties.setProperty("druid.testWhileIdle", "false");
|
||||
}
|
||||
|
||||
Boolean testOnBorrow = this.testOnBorrow == null ? config.getTestOnBorrow() : this.testOnBorrow;
|
||||
if (testOnBorrow != null && !testOnBorrow.equals(DEFAULT_TEST_ON_BORROW)) {
|
||||
Boolean tempTestOnBorrow = testOnBorrow == null ? globalConfig.getTestOnBorrow() : testOnBorrow;
|
||||
if (tempTestOnBorrow != null && !tempTestOnBorrow.equals(DEFAULT_TEST_ON_BORROW)) {
|
||||
properties.setProperty("druid.testOnBorrow", "true");
|
||||
}
|
||||
|
||||
String validationQuery = this.validationQuery == null ? config.getValidationQuery() : this.validationQuery;
|
||||
if (validationQuery != null && validationQuery.length() > 0) {
|
||||
properties.setProperty("druid.validationQuery", validationQuery);
|
||||
String tempValidationQuery = validationQuery == null ? globalConfig.getValidationQuery() : validationQuery;
|
||||
if (tempValidationQuery != null && tempValidationQuery.length() > 0) {
|
||||
properties.setProperty("druid.validationQuery", tempValidationQuery);
|
||||
}
|
||||
|
||||
Boolean useGlobalDataSourceStat = this.useGlobalDataSourceStat == null ? config.getUseGlobalDataSourceStat() : this.useGlobalDataSourceStat;
|
||||
if (useGlobalDataSourceStat != null && useGlobalDataSourceStat.equals(Boolean.TRUE)) {
|
||||
Boolean tempUseGlobalDataSourceStat = useGlobalDataSourceStat == null ? globalConfig.getUseGlobalDataSourceStat() : useGlobalDataSourceStat;
|
||||
if (tempUseGlobalDataSourceStat != null && tempUseGlobalDataSourceStat.equals(Boolean.TRUE)) {
|
||||
properties.setProperty("druid.useGlobalDataSourceStat", "true");
|
||||
}
|
||||
|
||||
Boolean asyncInit = this.asyncInit == null ? config.getAsyncInit() : this.asyncInit;
|
||||
if (asyncInit != null && asyncInit.equals(Boolean.TRUE)) {
|
||||
Boolean tempAsyncInit = asyncInit == null ? globalConfig.getAsyncInit() : asyncInit;
|
||||
if (tempAsyncInit != null && tempAsyncInit.equals(Boolean.TRUE)) {
|
||||
properties.setProperty("druid.asyncInit", "true");
|
||||
}
|
||||
|
||||
//filters单独处理,默认了stat,wall
|
||||
String filters = this.filters == null ? config.getFilters() : this.filters;
|
||||
if (filters == null) {
|
||||
filters = "stat,wall";
|
||||
String tempFilters = filters == null ? globalConfig.getFilters() : filters;
|
||||
if (tempFilters == null) {
|
||||
tempFilters = "stat,wall";
|
||||
}
|
||||
if (publicKey != null && publicKey.length() > 0 && !filters.contains("config")) {
|
||||
filters += ",config";
|
||||
if (publicKey != null && publicKey.length() > 0 && !tempFilters.contains("config")) {
|
||||
tempFilters += ",config";
|
||||
}
|
||||
properties.setProperty("druid.filters", filters);
|
||||
properties.setProperty("druid.filters", tempFilters);
|
||||
|
||||
Boolean clearFiltersEnable = this.clearFiltersEnable == null ? config.getClearFiltersEnable() : this.clearFiltersEnable;
|
||||
if (clearFiltersEnable != null && clearFiltersEnable.equals(Boolean.FALSE)) {
|
||||
Boolean tempClearFiltersEnable = clearFiltersEnable == null ? globalConfig.getClearFiltersEnable() : clearFiltersEnable;
|
||||
if (tempClearFiltersEnable != null && tempClearFiltersEnable.equals(Boolean.FALSE)) {
|
||||
properties.setProperty("druid.clearFiltersEnable", "false");
|
||||
}
|
||||
|
||||
Boolean resetStatEnable = this.resetStatEnable == null ? config.getResetStatEnable() : this.resetStatEnable;
|
||||
if (resetStatEnable != null && resetStatEnable.equals(Boolean.FALSE)) {
|
||||
Boolean tempResetStatEnable = resetStatEnable == null ? globalConfig.getResetStatEnable() : resetStatEnable;
|
||||
if (tempResetStatEnable != null && tempResetStatEnable.equals(Boolean.FALSE)) {
|
||||
properties.setProperty("druid.resetStatEnable", "false");
|
||||
}
|
||||
|
||||
Integer notFullTimeoutRetryCount = this.notFullTimeoutRetryCount == null ? config.getNotFullTimeoutRetryCount() : this.notFullTimeoutRetryCount;
|
||||
if (notFullTimeoutRetryCount != null && !notFullTimeoutRetryCount.equals(0)) {
|
||||
properties.setProperty("druid.notFullTimeoutRetryCount", String.valueOf(notFullTimeoutRetryCount));
|
||||
Integer tempNotFullTimeoutRetryCount = notFullTimeoutRetryCount == null ? globalConfig.getNotFullTimeoutRetryCount() : notFullTimeoutRetryCount;
|
||||
if (tempNotFullTimeoutRetryCount != null && !tempNotFullTimeoutRetryCount.equals(0)) {
|
||||
properties.setProperty("druid.notFullTimeoutRetryCount", String.valueOf(tempNotFullTimeoutRetryCount));
|
||||
}
|
||||
|
||||
Long maxWaitThreadCount = this.maxWaitThreadCount == null ? config.getMaxWaitThreadCount() : this.maxWaitThreadCount;
|
||||
if (maxWaitThreadCount != null && !maxWaitThreadCount.equals(DEFAULT_MAX_WAIT)) {
|
||||
properties.setProperty("druid.maxWaitThreadCount", String.valueOf(maxWaitThreadCount));
|
||||
Long tempMaxWaitThreadCount = maxWaitThreadCount == null ? globalConfig.getMaxWaitThreadCount() : maxWaitThreadCount;
|
||||
if (tempMaxWaitThreadCount != null && !tempMaxWaitThreadCount.equals(DEFAULT_MAX_WAIT)) {
|
||||
properties.setProperty("druid.maxWaitThreadCount", String.valueOf(tempMaxWaitThreadCount));
|
||||
}
|
||||
|
||||
Boolean failFast = this.failFast == null ? config.getFailFast() : this.failFast;
|
||||
if (failFast != null && failFast.equals(Boolean.TRUE)) {
|
||||
Boolean tempFailFast = failFast == null ? globalConfig.getFailFast() : failFast;
|
||||
if (tempFailFast != null && tempFailFast.equals(Boolean.TRUE)) {
|
||||
properties.setProperty("druid.failFast", "true");
|
||||
}
|
||||
|
||||
Integer phyTimeoutMillis = this.phyTimeoutMillis == null ? config.getPhyTimeoutMillis() : this.phyTimeoutMillis;
|
||||
if (phyTimeoutMillis != null && !phyTimeoutMillis.equals(DEFAULT_PHY_TIMEOUT_MILLIS)) {
|
||||
properties.setProperty("druid.phyTimeoutMillis", String.valueOf(phyTimeoutMillis));
|
||||
Integer tempPhyTimeoutMillis = phyTimeoutMillis == null ? globalConfig.getPhyTimeoutMillis() : phyTimeoutMillis;
|
||||
if (tempPhyTimeoutMillis != null && !tempPhyTimeoutMillis.equals(DEFAULT_PHY_TIMEOUT_MILLIS)) {
|
||||
properties.setProperty("druid.phyTimeoutMillis", String.valueOf(tempPhyTimeoutMillis));
|
||||
}
|
||||
|
||||
Boolean keepAlive = this.keepAlive == null ? config.getKeepAlive() : this.keepAlive;
|
||||
if (keepAlive != null && keepAlive.equals(Boolean.TRUE)) {
|
||||
Boolean tempKeepAlive = keepAlive == null ? globalConfig.getKeepAlive() : keepAlive;
|
||||
if (tempKeepAlive != null && tempKeepAlive.equals(Boolean.TRUE)) {
|
||||
properties.setProperty("druid.keepAlive", "true");
|
||||
}
|
||||
|
||||
Boolean poolPreparedStatements = this.poolPreparedStatements == null ? config.getPoolPreparedStatements() : this.poolPreparedStatements;
|
||||
if (poolPreparedStatements != null && poolPreparedStatements.equals(Boolean.TRUE)) {
|
||||
Boolean tempPoolPreparedStatements = poolPreparedStatements == null ? globalConfig.getPoolPreparedStatements() : poolPreparedStatements;
|
||||
if (tempPoolPreparedStatements != null && tempPoolPreparedStatements.equals(Boolean.TRUE)) {
|
||||
properties.setProperty("druid.poolPreparedStatements", "true");
|
||||
}
|
||||
|
||||
Boolean initVariants = this.initVariants == null ? config.getInitVariants() : this.initVariants;
|
||||
if (initVariants != null && initVariants.equals(Boolean.TRUE)) {
|
||||
Boolean tempInitVariants = initVariants == null ? globalConfig.getInitVariants() : initVariants;
|
||||
if (tempInitVariants != null && tempInitVariants.equals(Boolean.TRUE)) {
|
||||
properties.setProperty("druid.initVariants", "true");
|
||||
}
|
||||
|
||||
Boolean initGlobalVariants = this.initGlobalVariants == null ? config.getInitGlobalVariants() : this.initGlobalVariants;
|
||||
if (initGlobalVariants != null && initGlobalVariants.equals(Boolean.TRUE)) {
|
||||
Boolean tempInitGlobalVariants = initGlobalVariants == null ? globalConfig.getInitGlobalVariants() : initGlobalVariants;
|
||||
if (tempInitGlobalVariants != null && tempInitGlobalVariants.equals(Boolean.TRUE)) {
|
||||
properties.setProperty("druid.initGlobalVariants", "true");
|
||||
}
|
||||
|
||||
Boolean useUnfairLock = this.useUnfairLock == null ? config.getUseUnfairLock() : this.useUnfairLock;
|
||||
if (useUnfairLock != null) {
|
||||
properties.setProperty("druid.useUnfairLock", String.valueOf(useUnfairLock));
|
||||
Boolean tempUseUnfairLock = useUnfairLock == null ? globalConfig.getUseUnfairLock() : useUnfairLock;
|
||||
if (tempUseUnfairLock != null) {
|
||||
properties.setProperty("druid.useUnfairLock", String.valueOf(tempUseUnfairLock));
|
||||
}
|
||||
|
||||
Boolean killWhenSocketReadTimeout = this.killWhenSocketReadTimeout == null ? config.getKillWhenSocketReadTimeout() : this.killWhenSocketReadTimeout;
|
||||
if (killWhenSocketReadTimeout != null && killWhenSocketReadTimeout.equals(Boolean.TRUE)) {
|
||||
Boolean tempKillWhenSocketReadTimeout = killWhenSocketReadTimeout == null ? globalConfig.getKillWhenSocketReadTimeout() : killWhenSocketReadTimeout;
|
||||
if (tempKillWhenSocketReadTimeout != null && tempKillWhenSocketReadTimeout.equals(Boolean.TRUE)) {
|
||||
properties.setProperty("druid.killWhenSocketReadTimeout", "true");
|
||||
}
|
||||
|
||||
String connectProperties = this.connectionProperties == null ? config.getConnectionProperties() : this.connectionProperties;
|
||||
Properties tempConnectProperties = connectionProperties == null ? globalConfig.getConnectionProperties() : connectionProperties;
|
||||
|
||||
if (this.publicKey != null && this.publicKey.length() > 0) {
|
||||
if (connectProperties == null) {
|
||||
connectProperties = "";
|
||||
if (publicKey != null && publicKey.length() > 0) {
|
||||
if (tempConnectProperties == null) {
|
||||
tempConnectProperties = new Properties();
|
||||
}
|
||||
log.info("动态数据源-检测到您配置了druid加密,加密所需连接参数已为您自动配置");
|
||||
connectProperties += "config.decrypt=true;config.decrypt.key=" + this.publicKey;
|
||||
tempConnectProperties.setProperty("config.decrypt", "true");
|
||||
tempConnectProperties.setProperty("config.decrypt.key", publicKey);
|
||||
}
|
||||
if (connectProperties != null && connectProperties.length() > 0) {
|
||||
properties.setProperty("druid.connectProperties", connectProperties);
|
||||
connectionProperties = tempConnectProperties;
|
||||
|
||||
Integer tempMaxPoolPreparedStatementPerConnectionSize = maxPoolPreparedStatementPerConnectionSize == null ? globalConfig.getMaxPoolPreparedStatementPerConnectionSize() : maxPoolPreparedStatementPerConnectionSize;
|
||||
if (tempMaxPoolPreparedStatementPerConnectionSize != null && !tempMaxPoolPreparedStatementPerConnectionSize.equals(10)) {
|
||||
properties.setProperty("druid.maxPoolPreparedStatementPerConnectionSize", String.valueOf(tempMaxPoolPreparedStatementPerConnectionSize));
|
||||
}
|
||||
|
||||
Integer maxPoolPreparedStatementPerConnectionSize = this.maxPoolPreparedStatementPerConnectionSize == null ? config.getMaxPoolPreparedStatementPerConnectionSize() : this.maxPoolPreparedStatementPerConnectionSize;
|
||||
if (maxPoolPreparedStatementPerConnectionSize != null && !maxPoolPreparedStatementPerConnectionSize.equals(10)) {
|
||||
properties.setProperty("druid.maxPoolPreparedStatementPerConnectionSize", String.valueOf(maxPoolPreparedStatementPerConnectionSize));
|
||||
}
|
||||
|
||||
String initConnectionSqls = this.initConnectionSqls == null ? config.getInitConnectionSqls() : this.initConnectionSqls;
|
||||
if (initConnectionSqls != null && initConnectionSqls.length() > 0) {
|
||||
properties.setProperty("druid.initConnectionSqls", initConnectionSqls);
|
||||
String tempInitConnectionSqls = initConnectionSqls == null ? globalConfig.getInitConnectionSqls() : initConnectionSqls;
|
||||
if (tempInitConnectionSqls != null && tempInitConnectionSqls.length() > 0) {
|
||||
properties.setProperty("druid.initConnectionSqls", tempInitConnectionSqls);
|
||||
}
|
||||
return properties;
|
||||
}
|
||||
|
@ -0,0 +1,197 @@
|
||||
/**
|
||||
* Copyright © 2018 organization baomidou
|
||||
* <pre>
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
* <pre/>
|
||||
*/
|
||||
package com.baomidou.dynamic.datasource.spring.boot.autoconfigure.hikari;
|
||||
|
||||
import com.zaxxer.hikari.HikariConfig;
|
||||
import lombok.Data;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Properties;
|
||||
|
||||
import static java.util.concurrent.TimeUnit.MINUTES;
|
||||
import static java.util.concurrent.TimeUnit.SECONDS;
|
||||
|
||||
/**
|
||||
* HikariCp参数配置
|
||||
*
|
||||
* @author TaoYu
|
||||
* @since 2.4.1
|
||||
*/
|
||||
@Data
|
||||
@Slf4j
|
||||
public class HikariCpConfig {
|
||||
|
||||
private static final long CONNECTION_TIMEOUT = SECONDS.toMillis(30);
|
||||
private static final long VALIDATION_TIMEOUT = SECONDS.toMillis(5);
|
||||
private static final long IDLE_TIMEOUT = MINUTES.toMillis(10);
|
||||
private static final long MAX_LIFETIME = MINUTES.toMillis(30);
|
||||
private static final int DEFAULT_POOL_SIZE = 10;
|
||||
|
||||
private String username;
|
||||
private String password;
|
||||
private String driverClassName;
|
||||
private String jdbcUrl;
|
||||
private String poolName;
|
||||
|
||||
private String catalog;
|
||||
private Long connectionTimeout;
|
||||
private Long validationTimeout;
|
||||
private Long idleTimeout;
|
||||
private Long leakDetectionThreshold;
|
||||
private Long maxLifetime;
|
||||
private Integer maxPoolSize;
|
||||
private Integer minIdle;
|
||||
|
||||
private Long initializationFailTimeout;
|
||||
private String connectionInitSql;
|
||||
private String connectionTestQuery;
|
||||
private String dataSourceClassName;
|
||||
private String dataSourceJndiName;
|
||||
private String schema;
|
||||
private String transactionIsolationName;
|
||||
private Boolean isAutoCommit;
|
||||
private Boolean isReadOnly;
|
||||
private Boolean isIsolateInternalQueries;
|
||||
private Boolean isRegisterMbeans;
|
||||
private Boolean isAllowPoolSuspension;
|
||||
private Properties dataSourceProperties;
|
||||
private Properties healthCheckProperties;
|
||||
|
||||
public HikariConfig toHikariConfig(HikariCpConfig globalConfig) {
|
||||
HikariConfig config = new com.zaxxer.hikari.HikariConfig();
|
||||
|
||||
String tempSchema = schema == null ? globalConfig.getSchema() : schema;
|
||||
if (tempSchema != null) {
|
||||
try {
|
||||
Field schemaField = com.zaxxer.hikari.HikariConfig.class.getDeclaredField("schema");
|
||||
schemaField.setAccessible(true);
|
||||
schemaField.set(config, tempSchema);
|
||||
} catch (NoSuchFieldException e) {
|
||||
log.warn("动态数据源-设置了Hikari的schema属性,但当前Hikari版本不支持");
|
||||
} catch (IllegalAccessException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
String tempCatalog = catalog == null ? globalConfig.getCatalog() : catalog;
|
||||
if (tempCatalog != null) {
|
||||
config.setCatalog(tempCatalog);
|
||||
}
|
||||
|
||||
Long tempConnectionTimeout = connectionTimeout == null ? globalConfig.getConnectionTimeout() : connectionTimeout;
|
||||
if (tempConnectionTimeout != null && !tempConnectionTimeout.equals(CONNECTION_TIMEOUT)) {
|
||||
config.setConnectionTimeout(tempConnectionTimeout);
|
||||
}
|
||||
|
||||
Long tempValidationTimeout = validationTimeout == null ? globalConfig.getValidationTimeout() : validationTimeout;
|
||||
if (tempValidationTimeout != null && !tempValidationTimeout.equals(VALIDATION_TIMEOUT)) {
|
||||
config.setValidationTimeout(tempValidationTimeout);
|
||||
}
|
||||
|
||||
Long tempIdleTimeout = idleTimeout == null ? globalConfig.getIdleTimeout() : idleTimeout;
|
||||
if (tempIdleTimeout != null && !tempIdleTimeout.equals(IDLE_TIMEOUT)) {
|
||||
config.setIdleTimeout(tempIdleTimeout);
|
||||
}
|
||||
|
||||
Long tempLeakDetectionThreshold = leakDetectionThreshold == null ? globalConfig.getLeakDetectionThreshold() : leakDetectionThreshold;
|
||||
if (tempLeakDetectionThreshold != null) {
|
||||
config.setLeakDetectionThreshold(tempLeakDetectionThreshold);
|
||||
}
|
||||
|
||||
Long tempMaxLifetime = maxLifetime == null ? globalConfig.getMaxLifetime() : maxLifetime;
|
||||
if (tempMaxLifetime != null && !tempMaxLifetime.equals(MAX_LIFETIME)) {
|
||||
config.setMaxLifetime(tempMaxLifetime);
|
||||
}
|
||||
|
||||
Integer tempMaxPoolSize = maxPoolSize == null ? globalConfig.getMaxPoolSize() : maxPoolSize;
|
||||
if (tempMaxPoolSize != null && !tempMaxPoolSize.equals(-1)) {
|
||||
config.setMaximumPoolSize(tempMaxPoolSize);
|
||||
}
|
||||
|
||||
Integer tempMinIdle = minIdle == null ? globalConfig.getMinIdle() : getMinIdle();
|
||||
if (tempMinIdle != null && !tempMinIdle.equals(-1)) {
|
||||
config.setMinimumIdle(tempMinIdle);
|
||||
}
|
||||
|
||||
Long tempInitializationFailTimeout = initializationFailTimeout == null ? globalConfig.getInitializationFailTimeout() : initializationFailTimeout;
|
||||
if (tempInitializationFailTimeout != null && !tempInitializationFailTimeout.equals(1)) {
|
||||
config.setInitializationFailTimeout(tempInitializationFailTimeout);
|
||||
}
|
||||
|
||||
String tempConnectionInitSql = connectionInitSql == null ? globalConfig.getConnectionInitSql() : connectionInitSql;
|
||||
if (tempConnectionInitSql != null) {
|
||||
config.setConnectionInitSql(tempConnectionInitSql);
|
||||
}
|
||||
|
||||
String tempConnectionTestQuery = connectionTestQuery == null ? globalConfig.getConnectionTestQuery() : connectionTestQuery;
|
||||
if (tempConnectionTestQuery != null) {
|
||||
config.setConnectionTestQuery(tempConnectionTestQuery);
|
||||
}
|
||||
|
||||
String tempDataSourceClassName = dataSourceClassName == null ? globalConfig.getDataSourceClassName() : dataSourceClassName;
|
||||
if (tempDataSourceClassName != null) {
|
||||
config.setDataSourceClassName(tempDataSourceClassName);
|
||||
}
|
||||
|
||||
String tempDataSourceJndiName = dataSourceJndiName == null ? globalConfig.getDataSourceJndiName() : dataSourceJndiName;
|
||||
if (tempDataSourceJndiName != null) {
|
||||
config.setDataSourceJNDI(tempDataSourceJndiName);
|
||||
}
|
||||
|
||||
String tempTransactionIsolationName = transactionIsolationName == null ? globalConfig.getTransactionIsolationName() : transactionIsolationName;
|
||||
if (tempTransactionIsolationName != null) {
|
||||
config.setTransactionIsolation(tempTransactionIsolationName);
|
||||
}
|
||||
|
||||
Boolean tempAutoCommit = isAutoCommit == null ? globalConfig.getIsAutoCommit() : isAutoCommit;
|
||||
if (tempAutoCommit != null && tempAutoCommit.equals(Boolean.FALSE)) {
|
||||
config.setAutoCommit(false);
|
||||
}
|
||||
|
||||
Boolean tempReadOnly = isReadOnly == null ? globalConfig.getIsReadOnly() : isReadOnly;
|
||||
if (tempReadOnly != null) {
|
||||
config.setReadOnly(tempReadOnly);
|
||||
}
|
||||
|
||||
Boolean tempIsolateInternalQueries = isIsolateInternalQueries == null ? globalConfig.getIsIsolateInternalQueries() : isIsolateInternalQueries;
|
||||
if (tempIsolateInternalQueries != null) {
|
||||
config.setIsolateInternalQueries(tempIsolateInternalQueries);
|
||||
}
|
||||
|
||||
Boolean tempRegisterMbeans = isRegisterMbeans == null ? globalConfig.getIsRegisterMbeans() : isRegisterMbeans;
|
||||
if (tempRegisterMbeans != null) {
|
||||
config.setRegisterMbeans(tempRegisterMbeans);
|
||||
}
|
||||
|
||||
Boolean tempAllowPoolSuspension = isAllowPoolSuspension == null ? globalConfig.getIsAllowPoolSuspension() : isAllowPoolSuspension;
|
||||
if (tempAllowPoolSuspension != null) {
|
||||
config.setAllowPoolSuspension(tempAllowPoolSuspension);
|
||||
}
|
||||
|
||||
Properties tempDataSourceProperties = dataSourceProperties == null ? globalConfig.getDataSourceProperties() : dataSourceProperties;
|
||||
if (tempDataSourceProperties != null) {
|
||||
config.setDataSourceProperties(tempDataSourceProperties);
|
||||
}
|
||||
|
||||
Properties tempHealthCheckProperties = healthCheckProperties == null ? globalConfig.getHealthCheckProperties() : healthCheckProperties;
|
||||
if (tempHealthCheckProperties != null) {
|
||||
config.setHealthCheckProperties(tempHealthCheckProperties);
|
||||
}
|
||||
return config;
|
||||
}
|
||||
}
|
@ -1,27 +1,10 @@
|
||||
{
|
||||
"hints": [],
|
||||
"groups": [
|
||||
{
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties",
|
||||
"name": "spring.datasource.dynamic",
|
||||
"type": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties",
|
||||
"name": "spring.datasource.dynamic.druid",
|
||||
"type": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.druid.DruidConfig"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties",
|
||||
"name": "spring.datasource.dynamic.hikari",
|
||||
"type": "com.zaxxer.hikari.HikariConfig"
|
||||
}
|
||||
],
|
||||
"properties": [
|
||||
{
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties",
|
||||
"name": "spring.datasource.dynamic.datasource",
|
||||
"description": "每一个数据源",
|
||||
"name": "spring.datasource.dynamic.datasource",
|
||||
"type": "java.util.Map<java.lang.String,com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty>"
|
||||
},
|
||||
{
|
||||
@ -47,7 +30,7 @@
|
||||
{
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.druid.DruidConfig",
|
||||
"name": "spring.datasource.dynamic.druid.connection-properties",
|
||||
"type": "java.lang.String"
|
||||
"type": "java.util.Properties"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.druid.DruidConfig",
|
||||
@ -205,206 +188,182 @@
|
||||
"type": "java.lang.Integer"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.zaxxer.hikari.HikariConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.allow-pool-suspension",
|
||||
"type": "java.lang.Boolean"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.zaxxer.hikari.HikariConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.auto-commit",
|
||||
"type": "java.lang.Boolean"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.zaxxer.hikari.HikariConfig",
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.hikari.HikariCpConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.catalog",
|
||||
"type": "java.lang.String"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.zaxxer.hikari.HikariConfig",
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.hikari.HikariCpConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.connection-init-sql",
|
||||
"type": "java.lang.String"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.zaxxer.hikari.HikariConfig",
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.hikari.HikariCpConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.connection-test-query",
|
||||
"type": "java.lang.String"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.zaxxer.hikari.HikariConfig",
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.hikari.HikariCpConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.connection-timeout",
|
||||
"type": "java.lang.Long"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.zaxxer.hikari.HikariConfig",
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.hikari.HikariCpConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.data-source-class-name",
|
||||
"type": "java.lang.String"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.zaxxer.hikari.HikariConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.data-source-j-n-d-i",
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.hikari.HikariCpConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.data-source-jndi-name",
|
||||
"type": "java.lang.String"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.zaxxer.hikari.HikariConfig",
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.hikari.HikariCpConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.data-source-properties",
|
||||
"type": "java.util.Properties"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.zaxxer.hikari.HikariConfig",
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.hikari.HikariCpConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.driver-class-name",
|
||||
"type": "java.lang.String"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.zaxxer.hikari.HikariConfig",
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.hikari.HikariCpConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.health-check-properties",
|
||||
"type": "java.util.Properties"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.zaxxer.hikari.HikariConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.health-check-registry",
|
||||
"type": "java.lang.Object"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.zaxxer.hikari.HikariConfig",
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.hikari.HikariCpConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.idle-timeout",
|
||||
"type": "java.lang.Long"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.zaxxer.hikari.HikariConfig",
|
||||
"deprecated": true,
|
||||
"name": "spring.datasource.dynamic.hikari.initialization-fail-fast",
|
||||
"type": "java.lang.Boolean",
|
||||
"deprecation": {}
|
||||
},
|
||||
{
|
||||
"sourceType": "com.zaxxer.hikari.HikariConfig",
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.hikari.HikariCpConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.initialization-fail-timeout",
|
||||
"type": "java.lang.Long"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.zaxxer.hikari.HikariConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.isolate-internal-queries",
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.hikari.HikariCpConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.is-allow-pool-suspension",
|
||||
"type": "java.lang.Boolean"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.zaxxer.hikari.HikariConfig",
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.hikari.HikariCpConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.is-auto-commit",
|
||||
"type": "java.lang.Boolean"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.hikari.HikariCpConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.is-isolate-internal-queries",
|
||||
"type": "java.lang.Boolean"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.hikari.HikariCpConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.is-read-only",
|
||||
"type": "java.lang.Boolean"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.hikari.HikariCpConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.is-register-mbeans",
|
||||
"type": "java.lang.Boolean"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.hikari.HikariCpConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.jdbc-url",
|
||||
"type": "java.lang.String"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.zaxxer.hikari.HikariConfig",
|
||||
"deprecated": true,
|
||||
"name": "spring.datasource.dynamic.hikari.jdbc4-connection-test",
|
||||
"type": "java.lang.Boolean",
|
||||
"deprecation": {}
|
||||
},
|
||||
{
|
||||
"sourceType": "com.zaxxer.hikari.HikariConfig",
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.hikari.HikariCpConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.leak-detection-threshold",
|
||||
"type": "java.lang.Long"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.zaxxer.hikari.HikariConfig",
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.hikari.HikariCpConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.max-lifetime",
|
||||
"type": "java.lang.Long"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.zaxxer.hikari.HikariConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.maximum-pool-size",
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.hikari.HikariCpConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.max-pool-size",
|
||||
"type": "java.lang.Integer"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.zaxxer.hikari.HikariConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.metric-registry",
|
||||
"type": "java.lang.Object"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.zaxxer.hikari.HikariConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.metrics-tracker-factory",
|
||||
"type": "com.zaxxer.hikari.metrics.MetricsTrackerFactory"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.zaxxer.hikari.HikariConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.minimum-idle",
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.hikari.HikariCpConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.min-idle",
|
||||
"type": "java.lang.Integer"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.zaxxer.hikari.HikariConfig",
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.hikari.HikariCpConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.password",
|
||||
"type": "java.lang.String"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.zaxxer.hikari.HikariConfig",
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.hikari.HikariCpConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.pool-name",
|
||||
"type": "java.lang.String"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.zaxxer.hikari.HikariConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.read-only",
|
||||
"type": "java.lang.Boolean"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.zaxxer.hikari.HikariConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.register-mbeans",
|
||||
"type": "java.lang.Boolean"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.zaxxer.hikari.HikariConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.scheduled-executor",
|
||||
"type": "java.util.concurrent.ScheduledExecutorService"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.zaxxer.hikari.HikariConfig",
|
||||
"deprecated": true,
|
||||
"name": "spring.datasource.dynamic.hikari.scheduled-executor-service",
|
||||
"type": "java.util.concurrent.ScheduledThreadPoolExecutor",
|
||||
"deprecation": {}
|
||||
},
|
||||
{
|
||||
"sourceType": "com.zaxxer.hikari.HikariConfig",
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.hikari.HikariCpConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.schema",
|
||||
"type": "java.lang.String"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.zaxxer.hikari.HikariConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.transaction-isolation",
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.hikari.HikariCpConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.transaction-isolation-name",
|
||||
"type": "java.lang.String"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.zaxxer.hikari.HikariConfig",
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.hikari.HikariCpConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.username",
|
||||
"type": "java.lang.String"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.zaxxer.hikari.HikariConfig",
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.hikari.HikariCpConfig",
|
||||
"name": "spring.datasource.dynamic.hikari.validation-timeout",
|
||||
"type": "java.lang.Long"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties",
|
||||
"name": "spring.datasource.dynamic.order",
|
||||
"description": "aop切面顺序,默认优先级最高",
|
||||
"name": "spring.datasource.dynamic.order",
|
||||
"type": "java.lang.Integer"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties",
|
||||
"defaultValue": false,
|
||||
"name": "spring.datasource.dynamic.p6spy",
|
||||
"description": "是否使用p6spy输出,默认不输出",
|
||||
"name": "spring.datasource.dynamic.p6spy",
|
||||
"defaultValue": false,
|
||||
"type": "java.lang.Boolean"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties",
|
||||
"defaultValue": "master",
|
||||
"name": "spring.datasource.dynamic.primary",
|
||||
"description": "必须设置默认的库,默认master",
|
||||
"name": "spring.datasource.dynamic.primary",
|
||||
"defaultValue": "master",
|
||||
"type": "java.lang.String"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties",
|
||||
"name": "spring.datasource.dynamic.strategy",
|
||||
"description": "多数据源选择算法clazz,默认负载均衡算法",
|
||||
"name": "spring.datasource.dynamic.strategy",
|
||||
"type": "java.lang.Class<? extends com.baomidou.dynamic.datasource.strategy.DynamicDataSourceStrategy>"
|
||||
}
|
||||
],
|
||||
"groups": [
|
||||
{
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties",
|
||||
"name": "spring.datasource.dynamic",
|
||||
"type": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties",
|
||||
"name": "spring.datasource.dynamic.druid",
|
||||
"type": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.druid.DruidConfig"
|
||||
},
|
||||
{
|
||||
"sourceType": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties",
|
||||
"name": "spring.datasource.dynamic.hikari",
|
||||
"type": "com.baomidou.dynamic.datasource.spring.boot.autoconfigure.hikari.HikariCpConfig"
|
||||
}
|
||||
]
|
||||
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,5 +0,0 @@
|
||||
#Generated by Apache Maven
|
||||
#Sun Nov 18 22:32:09 CST 2018
|
||||
version=2.3.7
|
||||
groupId=com.baomidou
|
||||
artifactId=dynamic-datasource-spring-boot-starter
|
@ -1,26 +0,0 @@
|
||||
com\baomidou\dynamic\datasource\spring\boot\autoconfigure\druid\DruidConfig.class
|
||||
com\baomidou\dynamic\datasource\DynamicDataSourceCreator.class
|
||||
com\baomidou\dynamic\datasource\spel\DynamicDataSourceSpelResolver.class
|
||||
com\baomidou\dynamic\datasource\aop\DynamicDataSourceAnnotationInterceptor.class
|
||||
com\baomidou\dynamic\datasource\AbstractRoutingDataSource.class
|
||||
com\baomidou\dynamic\datasource\aop\DynamicDataSourceAnnotationAdvisor.class
|
||||
com\baomidou\dynamic\datasource\DynamicRoutingDataSource.class
|
||||
com\baomidou\dynamic\datasource\spring\boot\autoconfigure\DataSourceProperty.class
|
||||
com\baomidou\dynamic\datasource\strategy\DynamicDataSourceStrategy.class
|
||||
com\baomidou\dynamic\datasource\spel\DefaultDynamicDataSourceSpelParser.class
|
||||
META-INF\spring-configuration-metadata.json
|
||||
com\baomidou\dynamic\datasource\provider\DynamicDataSourceProvider.class
|
||||
com\baomidou\dynamic\datasource\spel\DynamicDataSourceSpelParser.class
|
||||
com\baomidou\dynamic\datasource\toolkit\DynamicDataSourceContextHolder$1.class
|
||||
com\baomidou\dynamic\datasource\spring\boot\autoconfigure\druid\DruidDynamicDataSourceConfiguration.class
|
||||
com\baomidou\dynamic\datasource\toolkit\DynamicDataSourceContextHolder.class
|
||||
com\baomidou\dynamic\datasource\DynamicDataSourceClassResolver.class
|
||||
com\baomidou\dynamic\datasource\spring\boot\autoconfigure\DynamicDataSourceAutoConfiguration.class
|
||||
com\baomidou\dynamic\datasource\strategy\RandomDynamicDataSourceStrategy.class
|
||||
com\baomidou\dynamic\datasource\strategy\LoadBalanceDynamicDataSourceStrategy.class
|
||||
com\baomidou\dynamic\datasource\provider\YmlDynamicDataSourceProvider.class
|
||||
com\baomidou\dynamic\datasource\spel\DefaultDynamicDataSourceSpelResolver.class
|
||||
com\baomidou\dynamic\datasource\spring\boot\autoconfigure\DynamicDataSourceProperties.class
|
||||
com\baomidou\dynamic\datasource\DynamicGroupDataSource.class
|
||||
com\baomidou\dynamic\datasource\provider\AbstractJdbcDataSourceProvider.class
|
||||
com\baomidou\dynamic\datasource\annotation\DS.class
|
@ -1,24 +0,0 @@
|
||||
E:\workspace_baomidou\dynamic-datasource-spring-boot-starter\src\main\java\com\baomidou\dynamic\datasource\DynamicDataSourceCreator.java
|
||||
E:\workspace_baomidou\dynamic-datasource-spring-boot-starter\src\main\java\com\baomidou\dynamic\datasource\spel\DefaultDynamicDataSourceSpelParser.java
|
||||
E:\workspace_baomidou\dynamic-datasource-spring-boot-starter\src\main\java\com\baomidou\dynamic\datasource\spel\DefaultDynamicDataSourceSpelResolver.java
|
||||
E:\workspace_baomidou\dynamic-datasource-spring-boot-starter\src\main\java\com\baomidou\dynamic\datasource\strategy\RandomDynamicDataSourceStrategy.java
|
||||
E:\workspace_baomidou\dynamic-datasource-spring-boot-starter\src\main\java\com\baomidou\dynamic\datasource\spel\DynamicDataSourceSpelParser.java
|
||||
E:\workspace_baomidou\dynamic-datasource-spring-boot-starter\src\main\java\com\baomidou\dynamic\datasource\spring\boot\autoconfigure\druid\DruidConfig.java
|
||||
E:\workspace_baomidou\dynamic-datasource-spring-boot-starter\src\main\java\com\baomidou\dynamic\datasource\spring\boot\autoconfigure\DataSourceProperty.java
|
||||
E:\workspace_baomidou\dynamic-datasource-spring-boot-starter\src\main\java\com\baomidou\dynamic\datasource\provider\YmlDynamicDataSourceProvider.java
|
||||
E:\workspace_baomidou\dynamic-datasource-spring-boot-starter\src\main\java\com\baomidou\dynamic\datasource\strategy\LoadBalanceDynamicDataSourceStrategy.java
|
||||
E:\workspace_baomidou\dynamic-datasource-spring-boot-starter\src\main\java\com\baomidou\dynamic\datasource\spel\DynamicDataSourceSpelResolver.java
|
||||
E:\workspace_baomidou\dynamic-datasource-spring-boot-starter\src\main\java\com\baomidou\dynamic\datasource\aop\DynamicDataSourceAnnotationAdvisor.java
|
||||
E:\workspace_baomidou\dynamic-datasource-spring-boot-starter\src\main\java\com\baomidou\dynamic\datasource\DynamicRoutingDataSource.java
|
||||
E:\workspace_baomidou\dynamic-datasource-spring-boot-starter\src\main\java\com\baomidou\dynamic\datasource\strategy\DynamicDataSourceStrategy.java
|
||||
E:\workspace_baomidou\dynamic-datasource-spring-boot-starter\src\main\java\com\baomidou\dynamic\datasource\spring\boot\autoconfigure\druid\DruidDynamicDataSourceConfiguration.java
|
||||
E:\workspace_baomidou\dynamic-datasource-spring-boot-starter\src\main\java\com\baomidou\dynamic\datasource\toolkit\DynamicDataSourceContextHolder.java
|
||||
E:\workspace_baomidou\dynamic-datasource-spring-boot-starter\src\main\java\com\baomidou\dynamic\datasource\DynamicDataSourceClassResolver.java
|
||||
E:\workspace_baomidou\dynamic-datasource-spring-boot-starter\src\main\java\com\baomidou\dynamic\datasource\provider\DynamicDataSourceProvider.java
|
||||
E:\workspace_baomidou\dynamic-datasource-spring-boot-starter\src\main\java\com\baomidou\dynamic\datasource\spring\boot\autoconfigure\DynamicDataSourceProperties.java
|
||||
E:\workspace_baomidou\dynamic-datasource-spring-boot-starter\src\main\java\com\baomidou\dynamic\datasource\annotation\DS.java
|
||||
E:\workspace_baomidou\dynamic-datasource-spring-boot-starter\src\main\java\com\baomidou\dynamic\datasource\aop\DynamicDataSourceAnnotationInterceptor.java
|
||||
E:\workspace_baomidou\dynamic-datasource-spring-boot-starter\src\main\java\com\baomidou\dynamic\datasource\DynamicGroupDataSource.java
|
||||
E:\workspace_baomidou\dynamic-datasource-spring-boot-starter\src\main\java\com\baomidou\dynamic\datasource\provider\AbstractJdbcDataSourceProvider.java
|
||||
E:\workspace_baomidou\dynamic-datasource-spring-boot-starter\src\main\java\com\baomidou\dynamic\datasource\spring\boot\autoconfigure\DynamicDataSourceAutoConfiguration.java
|
||||
E:\workspace_baomidou\dynamic-datasource-spring-boot-starter\src\main\java\com\baomidou\dynamic\datasource\AbstractRoutingDataSource.java
|
Loading…
x
Reference in New Issue
Block a user