From d5a2ec0dd2f7776e2c5cef05f9c53e4adf9b4fa8 Mon Sep 17 00:00:00 2001 From: trang Date: Sat, 10 Mar 2018 20:04:04 +0800 Subject: [PATCH] 1.1.8 snapshot --- .../src/main/resources/application.yml | 2 +- .../mybatis/DruidMybatisApplication.java | 11 +- .../mybatis/config/DynamicDataSource.java | 5 +- .../druid/example/mybatis/model/City.java | 43 +----- .../src/main/resources/application.yml | 54 +++----- .../src/main/resources/druid.yml | 128 ++++++++++-------- .../autoconfigure/DruidAutoConfiguration.java | 2 +- .../DruidServletConfiguration.java | 7 +- .../autoconfigure/DruidStatConfiguration.java | 7 +- ...ort.java => AbstractDruidDataSource2.java} | 16 ++- .../datasource/DruidDataSource2.java | 6 +- .../properties/DruidDataSourceProperties.java | 33 +++-- 12 files changed, 133 insertions(+), 181 deletions(-) rename druid-spring-boot/druid-spring-boot-autoconfigure/src/main/java/com/github/trang/druid/autoconfigure/datasource/{DruidDataSource2Support.java => AbstractDruidDataSource2.java} (87%) diff --git a/druid-spring-boot-example/druid-spring-boot-jpa-example/src/main/resources/application.yml b/druid-spring-boot-example/druid-spring-boot-jpa-example/src/main/resources/application.yml index 6195bd6..80d0061 100644 --- a/druid-spring-boot-example/druid-spring-boot-jpa-example/src/main/resources/application.yml +++ b/druid-spring-boot-example/druid-spring-boot-jpa-example/src/main/resources/application.yml @@ -25,7 +25,7 @@ spring: password: 123456 schema: classpath:import.sql druid: - # spring.datasource.druid 前缀的配置将注入到 DruidDataSource2Support,作为公共参数 + # spring.datasource.druid 前缀的配置将注入到 AbstractDruidDataSource2,作为公共参数 initial-size: 1 min-idle: 1 max-active: 10 diff --git a/druid-spring-boot-example/druid-spring-boot-mybatis-example/src/main/java/com/github/trang/druid/example/mybatis/DruidMybatisApplication.java b/druid-spring-boot-example/druid-spring-boot-mybatis-example/src/main/java/com/github/trang/druid/example/mybatis/DruidMybatisApplication.java index 6ab3a7a..bc9a7cc 100644 --- a/druid-spring-boot-example/druid-spring-boot-mybatis-example/src/main/java/com/github/trang/druid/example/mybatis/DruidMybatisApplication.java +++ b/druid-spring-boot-example/druid-spring-boot-mybatis-example/src/main/java/com/github/trang/druid/example/mybatis/DruidMybatisApplication.java @@ -1,9 +1,6 @@ package com.github.trang.druid.example.mybatis; -import com.github.trang.druid.example.mybatis.mapper.CityMapper; -import com.google.gson.Gson; import org.mybatis.spring.annotation.MapperScan; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -22,15 +19,9 @@ public class DruidMybatisApplication implements CommandLineRunner { SpringApplication.run(DruidMybatisApplication.class, args); } - @Autowired - private CityMapper cityMapper; - @Override public void run(String... args) { - Gson gson = new Gson(); - cityMapper.findAll().stream() - .map(gson::toJson) - .forEach(System.out::println); + } } \ No newline at end of file diff --git a/druid-spring-boot-example/druid-spring-boot-mybatis-example/src/main/java/com/github/trang/druid/example/mybatis/config/DynamicDataSource.java b/druid-spring-boot-example/druid-spring-boot-mybatis-example/src/main/java/com/github/trang/druid/example/mybatis/config/DynamicDataSource.java index 87f2052..bfa061d 100644 --- a/druid-spring-boot-example/druid-spring-boot-mybatis-example/src/main/java/com/github/trang/druid/example/mybatis/config/DynamicDataSource.java +++ b/druid-spring-boot-example/druid-spring-boot-mybatis-example/src/main/java/com/github/trang/druid/example/mybatis/config/DynamicDataSource.java @@ -17,10 +17,11 @@ import java.util.concurrent.atomic.AtomicInteger; * @author trang */ @Slf4j +@Getter public class DynamicDataSource extends AbstractRoutingDataSource { - private AtomicInteger count = new AtomicInteger(); - @Getter private Map targetDataSources; + private final AtomicInteger count = new AtomicInteger(); + private final Map targetDataSources; public DynamicDataSource(Map targetDataSources) { this.targetDataSources = targetDataSources; diff --git a/druid-spring-boot-example/druid-spring-boot-mybatis-example/src/main/java/com/github/trang/druid/example/mybatis/model/City.java b/druid-spring-boot-example/druid-spring-boot-mybatis-example/src/main/java/com/github/trang/druid/example/mybatis/model/City.java index ac1801a..085f087 100644 --- a/druid-spring-boot-example/druid-spring-boot-mybatis-example/src/main/java/com/github/trang/druid/example/mybatis/model/City.java +++ b/druid-spring-boot-example/druid-spring-boot-mybatis-example/src/main/java/com/github/trang/druid/example/mybatis/model/City.java @@ -1,5 +1,7 @@ package com.github.trang.druid.example.mybatis.model; +import lombok.Data; + import java.io.Serializable; /** @@ -7,53 +9,14 @@ import java.io.Serializable; * * @author trang */ +@Data public class City implements Serializable { private static final long serialVersionUID = 1L; private Long id; - private String name; - private String state; - private String country; - public Long getId() { - return this.id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getName() { - return this.name; - } - - public void setName(String name) { - this.name = name; - } - - public String getState() { - return this.state; - } - - public void setState(String state) { - this.state = state; - } - - public String getCountry() { - return this.country; - } - - public void setCountry(String country) { - this.country = country; - } - - @Override - public String toString() { - return getId() + "," + getName() + "," + getState() + "," + getCountry(); - } - } \ No newline at end of file diff --git a/druid-spring-boot-example/druid-spring-boot-mybatis-example/src/main/resources/application.yml b/druid-spring-boot-example/druid-spring-boot-mybatis-example/src/main/resources/application.yml index 1a95e9b..03138c4 100644 --- a/druid-spring-boot-example/druid-spring-boot-mybatis-example/src/main/resources/application.yml +++ b/druid-spring-boot-example/druid-spring-boot-mybatis-example/src/main/resources/application.yml @@ -1,13 +1,12 @@ -debug: false - logging: level: root: info org.springframework: info - org.springframework.jdbc: debug - org.mybatis: debug - com.alibaba.druid: debug - com.github.trang: debug + org.springframework.jdbc: info + org.mybatis: info + com.alibaba.druid: info + com.github.trang: info + executableSql: debug spring: application: @@ -16,29 +15,19 @@ spring: # 默认环境为 default,多数据源演示请改为 dynamic # active: dynamic active: default - output: - ansi: - enabled: detect + h2: + console: + enabled: true + settings: + trace: true datasource: url: jdbc:h2:mem:example username: root password: 123456 schema: classpath:import.sql druid: - # spring.datasource.druid 前缀的配置将注入到 DruidDataSource2Support,作为公共参数 - initial-size: 1 - min-idle: 1 - max-active: 10 - max-wait: 30000 - time-between-eviction-runs-millis: 60000 - min-evictable-idle-time-millis: 1800000 - max-evictable-idle-time-millis: 25200000 + query-timeout: 10 validation-query: SELECT 1 - test-while-idle: true - test-on-borrow: false - test-on-return: false - pool-prepared-statements: true - max-open-prepared-statements: 20 use-global-data-source-stat: true # 默认开启,当前已开启 stat: @@ -47,11 +36,9 @@ spring: # 默认关闭,需手动开启,当前已开启 slf4j: enabled: true + data-source-log-enabled: false connection-log-enabled: false - statement-sql-format-option: - upp-case: true - pretty-format: false - statement-executable-sql-log-enable: true + statement-log-enabled: false result-set-log-enabled: false # 默认关闭,需手动开启,当前已开启 wall: @@ -72,13 +59,11 @@ spring: # 默认关闭,需手动开启,当前已关闭 stat-view-servlet: enabled: false - h2: - console: - enabled: true - settings: - trace: true transaction: rollback-on-commit-failure: true + mvc: + servlet: + load-on-startup: 1 aop: auto: true proxy-target-class: true @@ -102,23 +87,25 @@ spring: parser: allow_unquoted_control_chars: true allow_single_quotes: true + mybatis: type-aliases-package: com.github.trang.druid.example.mybatis.model configuration: cache-enabled: false map-underscore-to-camel-case: true log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl + log-prefix: executableSql. --- -debug: true +debug: false spring: profiles: default --- -debug: true +debug: false spring: profiles: dynamic @@ -128,7 +115,6 @@ spring: # 循环依赖,所以需要手动排除 `org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration` - org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration datasource: - schema: classpath:import.sql druid: # 继承 spring.datasource.druid 前缀的配置,同时可以自定义配置,若名称相同则覆盖父配置 data-sources: diff --git a/druid-spring-boot-example/druid-spring-boot-mybatis-example/src/main/resources/druid.yml b/druid-spring-boot-example/druid-spring-boot-mybatis-example/src/main/resources/druid.yml index 8ecbc9c..42371ce 100644 --- a/druid-spring-boot-example/druid-spring-boot-mybatis-example/src/main/resources/druid.yml +++ b/druid-spring-boot-example/druid-spring-boot-mybatis-example/src/main/resources/druid.yml @@ -9,99 +9,107 @@ spring: password: Biyu5YzU+6sxDRbmWEa3B2uUcImzDo0BuXjTlL505+/pTb+/0Oqd3ou1R6J8+9Fy3CYrM18nBDqf6wAaPgUGOg== schema: classpath:import.sql druid: - initial-size: 1 - min-idle: 1 - max-active: 10 - max-wait: 30000 - time-between-eviction-runs-millis: 60000 - min-evictable-idle-time-millis: 1800000 - max-evictable-idle-time-millis: 25200000 + initial-size: 0 + max-active: 8 + min-idle: 0 + max-wait: -1 + not-full-timeout-retry-count: 0 validation-query: SELECT 1 + validation-query-timeout: -1 test-while-idle: true test-on-borrow: false test-on-return: false - pool-prepared-statements: true - max-open-prepared-statements: 20 - use-global-data-source-stat: true + time-between-eviction-runs-millis: 60000 + time-between-connect-error-millis: 500 + min-evictable-idle-time-millis: 1800000 + max-evictable-idle-time-millis: 25200000 + phy-timeout-millis: -1 + pool-prepared-statements: false + share-prepared-statements: false + max-pool-prepared-statement-per-connection-size: 10 + use-global-data-source-stat: false stat: ## 是否开启 StatFilter,默认 true,可以不写(https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatFilter) enabled: true ## 数据库类型 - db-type: h2 + db-type: ## 是否开启慢查询统计 - log-slow-sql: true + log-slow-sql: false ## 慢查询的定义 - slow-sql-millis: 1000 + slow-sql-millis: 3000 ## 是否开启合并参数化 SQL - merge-sql: true + merge-sql: false + ## 是否开启连接的堆栈信息 + connection-stack-trace-enable: false slf4j: ## 是否开启 StatFilter,默认 false(https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_LogFilter) enabled: true - ## datasource log 的总开关 - ## 无调用者,Slf4jLogFilter#isDataSourceLogEnabled + ## datasource log 的总开关,前置条件:druid.sql.DataSource 的日志级别为 debug + ## 无调用者 data-source-log-enabled: true - ## connection log 的总开关 - connection-log-enabled: false - ### 无调用者,LogFilter#isConnectionConnectBeforeLogEnabled - connection-connect-before-log-enabled: false + ## connection log 的总开关,前置条件:druid.sql.Connection 的日志级别为 debug + connection-log-enabled: true + ## connection error log 的总开关,前置条件:druid.sql.Connection 的日志级别为 debug + ## 无调用者 + connection-log-error-enabled: true + ### 无调用者 + connection-connect-before-log-enabled: true ### {conn-410001} connected ### {conn-410001} pool-connect - connection-connect-after-log-enabled: false - ### 无调用者,LogFilter#isConnectionCommitAfterLogEnabled - connection-commit-after-log-enabled: false - ### 无调用者,LogFilter#isConnectionRollbackAfterLogEnabled - connection-rollback-after-log-enabled: false + connection-connect-after-log-enabled: true ### {conn-410001} pool-recycle - connection-close-after-log-enabled: false - ## statement log 的总开关 + ### {conn-410001} closed + connection-close-after-log-enabled: true + ### 无调用者 + connection-commit-after-log-enabled: true + ### 无调用者 + connection-rollback-after-log-enabled: true + ## statement log 的总开关,前置条件:druid.sql.Statement 的日志级别为 debug statement-log-enabled: true ## statement sql 输出选项,可以开启多个 statement-sql-format-option: ### 关键字大写 - upp-case: true + upp-case: false ### 表名不敏感 desensitize: false ### 格式化 - pretty-format: false + pretty-format: true ### 参数化,column=? parameterized: false ## statement sql 格式化选项 - statement-sql-pretty-format: false - ### {conn-410001, pstmt-420002} created. - statement-create-after-log-enabled: false - ### 无调用者,LogFilter#isStatementPrepareAfterLogEnabled - statement-prepare-after-log-enabled: false - ### 无调用者,LogFilter#isStatementPrepareCallAfterLogEnabled - statement-prepare-call-after-log-enabled: false - ### {conn-410001, pstmt-420002} executed. - statement-execute-after-log-enabled: false - ### 无调用者,LogFilter#isStatementExecuteQueryAfterLogEnabled - statement-execute-query-after-log-enabled: false - ### 无调用者,LogFilter#isStatementExecuteUpdateAfterLogEnabled - statement-execute-update-after-log-enabled: false - ### 无调用者,LogFilter#isStatementExecuteBatchAfterLogEnabled - statement-execute-batch-after-log-enabled: false - ### {conn-410001, pstmt-420002} executed. $sql + statement-sql-pretty-format: true + ### {conn-410001, pstmt-420002} created. $sql + statement-create-after-log-enabled: true + ### {conn-410001, pstmt-420002} Parameters :[] + ### {conn-410001, pstmt-420002} Types :[] + statement-parameter-set-log-enabled: true + ### {conn-410001, pstmt-420002} executed. $executable-sql statement-executable-sql-log-enable: false + ### {conn-410001, pstmt-420002} executed. 2.073044 millis. $sql + statement-execute-after-log-enabled: true ### {conn-410001, pstmt-420002} closed - statement-close-after-log-enabled: false + statement-close-after-log-enabled: true + ### 无调用者,LogFilter#isStatementPrepareAfterLogEnabled + statement-prepare-after-log-enabled: true + ### 无调用者,LogFilter#isStatementPrepareCallAfterLogEnabled + statement-prepare-call-after-log-enabled: true + ### 无调用者,LogFilter#isStatementExecuteQueryAfterLogEnabled + statement-execute-query-after-log-enabled: true + ### 无调用者,LogFilter#isStatementExecuteUpdateAfterLogEnabled + statement-execute-update-after-log-enabled: true + ### 无调用者,LogFilter#isStatementExecuteBatchAfterLogEnabled + statement-execute-batch-after-log-enabled: true ### {conn-410001, pstmt-420002} clearParameters. - statement-parameter-clear-log-enable: false - ### {conn-410001, pstmt-420002} Parameters : - ### {conn-410001, pstmt-420002} Types : - statement-parameter-set-log-enabled: false - ## result-set log 的总开关 - result-set-log-enabled: false + statement-parameter-clear-log-enable: true + ## result-set log 的总开关,前置条件:druid.sql.ResultSet 的日志级别为 debug + result-set-log-enabled: true ### {conn-410001, pstmt-420000, rs-450000} open - ### {conn-410001, pstmt-420000, rs-450000} Header: - result-set-open-after-log-enabled: false - ### {conn-410001, pstmt-420000, rs-450000} Result: - result-set-next-after-log-enabled: false + ### {conn-410001, pstmt-420000, rs-450000} Header: [] + result-set-open-after-log-enabled: true + ### {conn-410001, pstmt-420000, rs-450000} Result: [] + result-set-next-after-log-enabled: true ### {conn-410001, pstmt-420000, rs-450000} closed - result-set-close-after-log-enabled: false - ## connection error log 的总开关 - ## 无调用者,Slf4jLogFilter#isConnectionLogErrorEnabled - connection-log-error-enabled: true + result-set-close-after-log-enabled: true ## statement error log 的总开关 ## {conn-410001, pstmt-420002} executed error. statement-log-error-enabled: true diff --git a/druid-spring-boot/druid-spring-boot-autoconfigure/src/main/java/com/github/trang/druid/autoconfigure/DruidAutoConfiguration.java b/druid-spring-boot/druid-spring-boot-autoconfigure/src/main/java/com/github/trang/druid/autoconfigure/DruidAutoConfiguration.java index 73d4032..02b187d 100644 --- a/druid-spring-boot/druid-spring-boot-autoconfigure/src/main/java/com/github/trang/druid/autoconfigure/DruidAutoConfiguration.java +++ b/druid-spring-boot/druid-spring-boot-autoconfigure/src/main/java/com/github/trang/druid/autoconfigure/DruidAutoConfiguration.java @@ -22,7 +22,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; -import static com.github.trang.druid.autoconfigure.properties.DruidDataSourceProperties.*; +import static com.github.trang.druid.autoconfigure.properties.DruidDataSourceProperties.DruidConstants.*; /** * Druid 连接池的自动配置 diff --git a/druid-spring-boot/druid-spring-boot-autoconfigure/src/main/java/com/github/trang/druid/autoconfigure/DruidServletConfiguration.java b/druid-spring-boot/druid-spring-boot-autoconfigure/src/main/java/com/github/trang/druid/autoconfigure/DruidServletConfiguration.java index a7a6fd5..f93a6f6 100644 --- a/druid-spring-boot/druid-spring-boot-autoconfigure/src/main/java/com/github/trang/druid/autoconfigure/DruidServletConfiguration.java +++ b/druid-spring-boot/druid-spring-boot-autoconfigure/src/main/java/com/github/trang/druid/autoconfigure/DruidServletConfiguration.java @@ -15,8 +15,7 @@ import org.springframework.util.StringUtils; import javax.servlet.Servlet; -import static com.github.trang.druid.autoconfigure.properties.DruidDataSourceProperties.DRUID_STAT_VIEW_SERVLET_PREFIX; - +import static com.github.trang.druid.autoconfigure.properties.DruidDataSourceProperties.DruidConstants.*; /** * Druid Servlet 配置 @@ -40,9 +39,7 @@ public class DruidServletConfiguration { public ServletRegistrationBean servletRegistrationBean(DruidDataSourceProperties druidDataSourceProperties) { log.debug("druid stat-view-servlet init..."); DruidStatViewServletProperties properties = druidDataSourceProperties.getStatViewServlet(); - ServletRegistrationBean registration = new ServletRegistrationBean(); - StatViewServlet statViewServlet = new StatViewServlet(); - registration.setServlet(statViewServlet); + ServletRegistrationBean registration = new ServletRegistrationBean<>(new StatViewServlet()); registration.addUrlMappings(properties.getUrlMappings()); if (!StringUtils.isEmpty(properties.getLoginUsername())) { registration.addInitParameter("loginUsername", properties.getLoginUsername()); diff --git a/druid-spring-boot/druid-spring-boot-autoconfigure/src/main/java/com/github/trang/druid/autoconfigure/DruidStatConfiguration.java b/druid-spring-boot/druid-spring-boot-autoconfigure/src/main/java/com/github/trang/druid/autoconfigure/DruidStatConfiguration.java index ab2ad0b..5c0d8ab 100644 --- a/druid-spring-boot/druid-spring-boot-autoconfigure/src/main/java/com/github/trang/druid/autoconfigure/DruidStatConfiguration.java +++ b/druid-spring-boot/druid-spring-boot-autoconfigure/src/main/java/com/github/trang/druid/autoconfigure/DruidStatConfiguration.java @@ -20,8 +20,7 @@ import org.springframework.util.StringUtils; import javax.servlet.Filter; -import static com.github.trang.druid.autoconfigure.properties.DruidDataSourceProperties.DRUID_AOP_STAT_PREFIX; -import static com.github.trang.druid.autoconfigure.properties.DruidDataSourceProperties.DRUID_WEB_STAT_PREFIX; +import static com.github.trang.druid.autoconfigure.properties.DruidDataSourceProperties.DruidConstants.*; /** * Druid 监控配置 @@ -78,9 +77,7 @@ public class DruidStatConfiguration { public FilterRegistrationBean filterRegistrationBean(DruidDataSourceProperties druidDataSourceProperties) { log.debug("druid web-stat-filter init..."); DruidWebStatProperties properties = druidDataSourceProperties.getWebStat(); - FilterRegistrationBean registration = new FilterRegistrationBean(); - WebStatFilter filter = new WebStatFilter(); - registration.setFilter(filter); + FilterRegistrationBean registration = new FilterRegistrationBean<>(new WebStatFilter()); registration.addUrlPatterns(properties.getUrlPatterns()); registration.addInitParameter("exclusions", properties.getExclusions()); registration.addInitParameter("sessionStatEnable", Boolean.toString(properties.isSessionStatEnable())); diff --git a/druid-spring-boot/druid-spring-boot-autoconfigure/src/main/java/com/github/trang/druid/autoconfigure/datasource/DruidDataSource2Support.java b/druid-spring-boot/druid-spring-boot-autoconfigure/src/main/java/com/github/trang/druid/autoconfigure/datasource/AbstractDruidDataSource2.java similarity index 87% rename from druid-spring-boot/druid-spring-boot-autoconfigure/src/main/java/com/github/trang/druid/autoconfigure/datasource/DruidDataSource2Support.java rename to druid-spring-boot/druid-spring-boot-autoconfigure/src/main/java/com/github/trang/druid/autoconfigure/datasource/AbstractDruidDataSource2.java index 13fa296..4142229 100644 --- a/druid-spring-boot/druid-spring-boot-autoconfigure/src/main/java/com/github/trang/druid/autoconfigure/datasource/DruidDataSource2Support.java +++ b/druid-spring-boot/druid-spring-boot-autoconfigure/src/main/java/com/github/trang/druid/autoconfigure/datasource/AbstractDruidDataSource2.java @@ -6,6 +6,7 @@ import com.alibaba.druid.filter.config.ConfigFilter; import com.alibaba.druid.pool.DruidDataSource; import com.github.trang.druid.autoconfigure.properties.DruidDataSourceProperties; import com.github.trang.druid.autoconfigure.properties.DruidDataSourceProperties.DruidConfigFilterProperties; +import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties; import org.springframework.boot.context.properties.ConfigurationProperties; @@ -16,7 +17,7 @@ import java.util.List; import java.util.Objects; import java.util.Optional; -import static com.github.trang.druid.autoconfigure.properties.DruidDataSourceProperties.DRUID_DATA_SOURCE_PREFIX; +import static com.github.trang.druid.autoconfigure.properties.DruidDataSourceProperties.DruidConstants.DRUID_DATA_SOURCE_PREFIX; /** * Druid 多数据源支持,会自动注入 'spring.datasource' 和 'spring.datasource.druid' 配置 @@ -24,14 +25,16 @@ import static com.github.trang.druid.autoconfigure.properties.DruidDataSourcePro * @author trang */ @ConfigurationProperties(prefix = DRUID_DATA_SOURCE_PREFIX) -public abstract class DruidDataSource2Support extends DruidDataSource { +public abstract class AbstractDruidDataSource2 extends DruidDataSource { + + private static final long serialVersionUID = -5155027912840793367L; @Autowired private DataSourceProperties dataSourceProperties; @Autowired private DruidDataSourceProperties druidDataSourceProperties; - @Autowired(required = false) - private List druidFilters; + @Autowired + private ObjectProvider> druidFilters; @PostConstruct public void initDruidParentProperties() { @@ -73,13 +76,12 @@ public abstract class DruidDataSource2Support extends DruidDataSource { private void initFilters() { List proxyFilters = super.getProxyFilters(); - Optional.ofNullable(druidFilters) + Optional.of(druidFilters.getIfAvailable()) .filter(filters -> !filters.isEmpty()) .ifPresent(filters -> filters.stream() .filter(Objects::nonNull) .filter(filter -> !proxyFilters.contains(filter)) - .forEach(proxyFilters::add) - ); + .forEach(proxyFilters::add)); } } \ No newline at end of file diff --git a/druid-spring-boot/druid-spring-boot-autoconfigure/src/main/java/com/github/trang/druid/autoconfigure/datasource/DruidDataSource2.java b/druid-spring-boot/druid-spring-boot-autoconfigure/src/main/java/com/github/trang/druid/autoconfigure/datasource/DruidDataSource2.java index 7783335..a6ddf8d 100644 --- a/druid-spring-boot/druid-spring-boot-autoconfigure/src/main/java/com/github/trang/druid/autoconfigure/datasource/DruidDataSource2.java +++ b/druid-spring-boot/druid-spring-boot-autoconfigure/src/main/java/com/github/trang/druid/autoconfigure/datasource/DruidDataSource2.java @@ -1,10 +1,12 @@ package com.github.trang.druid.autoconfigure.datasource; /** - * Druid 数据源,会继承 DruidDataSource2Support 的配置,并注入 'spring.datasource.druid.data-source.${name}' 的配置 + * Druid 数据源,会继承 AbstractDruidDataSource2 的配置,并注入 'spring.datasource.druid.data-source.${name}' 的配置 * * @author trang */ -public class DruidDataSource2 extends DruidDataSource2Support { +public class DruidDataSource2 extends AbstractDruidDataSource2 { + + private static final long serialVersionUID = 4980333179163868927L; } \ No newline at end of file diff --git a/druid-spring-boot/druid-spring-boot-autoconfigure/src/main/java/com/github/trang/druid/autoconfigure/properties/DruidDataSourceProperties.java b/druid-spring-boot/druid-spring-boot-autoconfigure/src/main/java/com/github/trang/druid/autoconfigure/properties/DruidDataSourceProperties.java index b7826f3..c4552ec 100644 --- a/druid-spring-boot/druid-spring-boot-autoconfigure/src/main/java/com/github/trang/druid/autoconfigure/properties/DruidDataSourceProperties.java +++ b/druid-spring-boot/druid-spring-boot-autoconfigure/src/main/java/com/github/trang/druid/autoconfigure/properties/DruidDataSourceProperties.java @@ -9,7 +9,7 @@ import org.springframework.boot.context.properties.NestedConfigurationProperty; import java.util.HashMap; import java.util.Map; -import static com.github.trang.druid.autoconfigure.properties.DruidDataSourceProperties.DRUID_DATA_SOURCE_PREFIX; +import static com.github.trang.druid.autoconfigure.properties.DruidDataSourceProperties.DruidConstants.*; /** * Druid 自定义配置 @@ -20,33 +20,38 @@ import static com.github.trang.druid.autoconfigure.properties.DruidDataSourcePro @Getter @Setter public class DruidDataSourceProperties { - public static final String DRUID_DATA_SOURCE_PREFIX = "spring.datasource.druid"; - public static final String DRUID_STAT_FILTER_PREFIX = "spring.datasource.druid.stat"; - public static final String DRUID_WALL_FILTER_PREFIX = "spring.datasource.druid.wall"; - public static final String DRUID_WALL_CONFIG_PREFIX = "spring.datasource.druid.wall.config"; - public static final String DRUID_SLF4J_FILTER_PREFIX = "spring.datasource.druid.slf4j"; - public static final String DRUID_LOG4J_FILTER_PREFIX = "spring.datasource.druid.log4j"; - public static final String DRUID_LOG4J2_FILTER_PREFIX = "spring.datasource.druid.log4j2"; - public static final String DRUID_COMMONS_LOG_FILTER_PREFIX = "spring.datasource.druid.commons-log"; - public static final String DRUID_CONFIG_FILTER_PREFIX = "spring.datasource.druid.config"; - public static final String DRUID_STAT_VIEW_SERVLET_PREFIX = "spring.datasource.druid.stat-view-servlet"; - public static final String DRUID_WEB_STAT_PREFIX = "spring.datasource.druid.web-stat"; - public static final String DRUID_AOP_STAT_PREFIX = "spring.datasource.druid.aop-stat"; + Map dataSources = new HashMap<>(16); /** druid config-filter 配置 */ @NestedConfigurationProperty DruidConfigFilterProperties config = new DruidConfigFilterProperties(); + /** druid stat-view-servlet 配置 */ @NestedConfigurationProperty DruidStatViewServletProperties statViewServlet = new DruidStatViewServletProperties(); + /** druid web-stat 配置 */ @NestedConfigurationProperty DruidWebStatProperties webStat = new DruidWebStatProperties(); + /** druid aop-stat 配置 */ @NestedConfigurationProperty DruidAopStatProperties aopStat = new DruidAopStatProperties(); - Map dataSources = new HashMap<>(16); + public static class DruidConstants { + public static final String DRUID_DATA_SOURCE_PREFIX = "spring.datasource.druid"; + public static final String DRUID_STAT_FILTER_PREFIX = "spring.datasource.druid.stat"; + public static final String DRUID_WALL_FILTER_PREFIX = "spring.datasource.druid.wall"; + public static final String DRUID_WALL_CONFIG_PREFIX = "spring.datasource.druid.wall.config"; + public static final String DRUID_SLF4J_FILTER_PREFIX = "spring.datasource.druid.slf4j"; + public static final String DRUID_LOG4J_FILTER_PREFIX = "spring.datasource.druid.log4j"; + public static final String DRUID_LOG4J2_FILTER_PREFIX = "spring.datasource.druid.log4j2"; + public static final String DRUID_COMMONS_LOG_FILTER_PREFIX = "spring.datasource.druid.commons-log"; + public static final String DRUID_CONFIG_FILTER_PREFIX = "spring.datasource.druid.config"; + public static final String DRUID_STAT_VIEW_SERVLET_PREFIX = "spring.datasource.druid.stat-view-servlet"; + public static final String DRUID_WEB_STAT_PREFIX = "spring.datasource.druid.web-stat"; + public static final String DRUID_AOP_STAT_PREFIX = "spring.datasource.druid.aop-stat"; + } @Getter @Setter