diff --git a/druid-spring-boot-actuator-autoconfigure/pom.xml b/druid-spring-boot-actuator-autoconfigure/pom.xml
index 28e8fff..d2538b1 100644
--- a/druid-spring-boot-actuator-autoconfigure/pom.xml
+++ b/druid-spring-boot-actuator-autoconfigure/pom.xml
@@ -31,6 +31,11 @@
druid
true
+
+ org.projectlombok
+ lombok
+ true
+
\ No newline at end of file
diff --git a/druid-spring-boot-actuator-autoconfigure/src/main/java/com/github/trang/druid/actuate/autoconfigure/DruidDataSourceActuatorAutoConfiguration.java b/druid-spring-boot-actuator-autoconfigure/src/main/java/com/github/trang/druid/actuate/autoconfigure/DruidDataSourceActuatorAutoConfiguration.java
index 1c0e798..c0b36b0 100644
--- a/druid-spring-boot-actuator-autoconfigure/src/main/java/com/github/trang/druid/actuate/autoconfigure/DruidDataSourceActuatorAutoConfiguration.java
+++ b/druid-spring-boot-actuator-autoconfigure/src/main/java/com/github/trang/druid/actuate/autoconfigure/DruidDataSourceActuatorAutoConfiguration.java
@@ -4,14 +4,17 @@ import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
/**
+ * Druid Actuator 自动配置,默认开启
+ *
* @author trang
*/
@Configuration
@ConditionalOnClass(DruidDataSource.class)
-@ConditionalOnProperty(prefix = "management.druid", name = "enabled", matchIfMissing = true)
-//@Import({DruidDataSourceEndpointConfiguration.class, DruidDataSourceMetadataProviderConfiguration.class})
+@ConditionalOnProperty(prefix = "management.druid", name = "enabled", havingValue = "true", matchIfMissing = true)
+@Import({DruidDataSourceEndpointConfiguration.class, DruidDataSourceMetadataProviderConfiguration.class})
public class DruidDataSourceActuatorAutoConfiguration {
}
\ No newline at end of file
diff --git a/druid-spring-boot-actuator-autoconfigure/src/main/java/com/github/trang/druid/actuate/autoconfigure/DruidDataSourceEndpointConfiguration.java b/druid-spring-boot-actuator-autoconfigure/src/main/java/com/github/trang/druid/actuate/autoconfigure/DruidDataSourceEndpointConfiguration.java
index 4698d66..c453575 100644
--- a/druid-spring-boot-actuator-autoconfigure/src/main/java/com/github/trang/druid/actuate/autoconfigure/DruidDataSourceEndpointConfiguration.java
+++ b/druid-spring-boot-actuator-autoconfigure/src/main/java/com/github/trang/druid/actuate/autoconfigure/DruidDataSourceEndpointConfiguration.java
@@ -1,13 +1,31 @@
package com.github.trang.druid.actuate.autoconfigure;
+import com.github.trang.druid.actuate.DruidDataSourceEndpoint;
+import com.github.trang.druid.actuate.DruidDataSourceMvcEndpoint;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
+ * Druid Endpoint & Druid MvcEndpoint 自动配置,默认开启
+ *
* @author trang
*/
@Configuration
-@ConditionalOnProperty(prefix = "endpoints.druid", name = "enabled", havingValue = "true")
+@ConditionalOnProperty(prefix = "endpoints.druid", name = "enabled", havingValue = "true", matchIfMissing = true)
public class DruidDataSourceEndpointConfiguration {
+ @Bean
+ @ConditionalOnMissingBean
+ public DruidDataSourceEndpoint druidDataSourceEndpoint() {
+ return new DruidDataSourceEndpoint();
+ }
+
+ @Bean
+ @ConditionalOnMissingBean
+ public DruidDataSourceMvcEndpoint druidDataSourceMvcEndpoint(DruidDataSourceEndpoint druidDataSourceEndpoint) {
+ return new DruidDataSourceMvcEndpoint(druidDataSourceEndpoint);
+ }
+
}
\ No newline at end of file
diff --git a/druid-spring-boot-actuator-autoconfigure/src/main/java/com/github/trang/druid/actuate/autoconfigure/DruidDataSourceMetadataProviderConfiguration.java b/druid-spring-boot-actuator-autoconfigure/src/main/java/com/github/trang/druid/actuate/autoconfigure/DruidDataSourceMetadataProviderConfiguration.java
index f25eee1..83603e9 100644
--- a/druid-spring-boot-actuator-autoconfigure/src/main/java/com/github/trang/druid/actuate/autoconfigure/DruidDataSourceMetadataProviderConfiguration.java
+++ b/druid-spring-boot-actuator-autoconfigure/src/main/java/com/github/trang/druid/actuate/autoconfigure/DruidDataSourceMetadataProviderConfiguration.java
@@ -3,7 +3,6 @@ package com.github.trang.druid.actuate.autoconfigure;
import com.alibaba.druid.pool.DruidDataSource;
import com.github.trang.druid.actuate.DruidDataSourcePoolMetadata;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.jdbc.metadata.DataSourcePoolMetadata;
import org.springframework.boot.autoconfigure.jdbc.metadata.DataSourcePoolMetadataProvider;
@@ -13,10 +12,11 @@ import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
/**
+ * Druid Metadata 自动配置,适用于 Metrics,默认开启
+ *
* @author trang
*/
@Configuration
-@ConditionalOnClass(DruidDataSource.class)
@ConditionalOnBean(DruidDataSource.class)
public class DruidDataSourceMetadataProviderConfiguration {
diff --git a/druid-spring-boot-actuator-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/druid-spring-boot-actuator-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json
new file mode 100644
index 0000000..c5b5a5c
--- /dev/null
+++ b/druid-spring-boot-actuator-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json
@@ -0,0 +1,24 @@
+{
+ "groups": [
+ {
+ "name": "management.druid"
+ },
+ {
+ "name": "endpoints.druid"
+ }
+ ],
+ "properties": [
+ {
+ "name": "management.druid.enabled",
+ "type": "java.lang.Boolean",
+ "description": "Whether or not druid actuator are enabled.",
+ "defaultValue": true
+ },
+ {
+ "name": "endpoints.druid.enabled",
+ "type": "java.lang.Boolean",
+ "description": "Whether or not druid endpoint are enabled.",
+ "defaultValue": false
+ }
+ ]
+}
\ No newline at end of file
diff --git a/druid-spring-boot-actuator-autoconfigure/src/main/resources/META-INF/spring.factories b/druid-spring-boot-actuator-autoconfigure/src/main/resources/META-INF/spring.factories
new file mode 100644
index 0000000..f135d76
--- /dev/null
+++ b/druid-spring-boot-actuator-autoconfigure/src/main/resources/META-INF/spring.factories
@@ -0,0 +1,2 @@
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
+com.github.trang.druid.actuate.autoconfigure.DruidDataSourceActuatorAutoConfiguration
\ No newline at end of file
diff --git a/druid-spring-boot-actuator-starter/pom.xml b/druid-spring-boot-actuator-starter/pom.xml
index ea11692..96cf49b 100644
--- a/druid-spring-boot-actuator-starter/pom.xml
+++ b/druid-spring-boot-actuator-starter/pom.xml
@@ -20,7 +20,10 @@
com.alibaba
druid
- true
+
+
+ org.projectlombok
+ lombok
diff --git a/druid-spring-boot-actuator-starter/src/main/resources/META-INF/spring.provides b/druid-spring-boot-actuator-starter/src/main/resources/META-INF/spring.provides
index b011b1b..0dad8dc 100644
--- a/druid-spring-boot-actuator-starter/src/main/resources/META-INF/spring.provides
+++ b/druid-spring-boot-actuator-starter/src/main/resources/META-INF/spring.provides
@@ -1 +1 @@
-provides: druid,druid-spring-boot-actuator,druid-spring-boot-actuator-autoconfigure,slf4j-api
\ No newline at end of file
+provides: druid,druid-spring-boot-actuator,druid-spring-boot-actuator-autoconfigure,slf4j-api,lombok
\ No newline at end of file
diff --git a/druid-spring-boot-actuator/pom.xml b/druid-spring-boot-actuator/pom.xml
index d54fe13..1b0ead7 100644
--- a/druid-spring-boot-actuator/pom.xml
+++ b/druid-spring-boot-actuator/pom.xml
@@ -17,6 +17,11 @@
org.springframework.boot
spring-boot-actuator
+
+ org.springframework
+ spring-webmvc
+ true
+
com.alibaba
druid
diff --git a/druid-spring-boot-actuator/src/main/java/com/github/trang/druid/actuate/DruidDataSourceEndpoint.java b/druid-spring-boot-actuator/src/main/java/com/github/trang/druid/actuate/DruidDataSourceEndpoint.java
index 6fbb036..b9be1ad 100644
--- a/druid-spring-boot-actuator/src/main/java/com/github/trang/druid/actuate/DruidDataSourceEndpoint.java
+++ b/druid-spring-boot-actuator/src/main/java/com/github/trang/druid/actuate/DruidDataSourceEndpoint.java
@@ -1,51 +1,29 @@
package com.github.trang.druid.actuate;
-import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.stat.DruidStatManagerFacade;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.actuate.endpoint.AbstractEndpoint;
-import org.springframework.boot.actuate.health.Health;
-import org.springframework.boot.actuate.health.Status;
+import org.springframework.boot.context.properties.ConfigurationProperties;
-import java.util.Collections;
import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
+import java.util.Map;
/**
+ * 将 Druid 的信息暴露出来
+ *
* @author trang
*/
-public class DruidDataSourceEndpoint extends AbstractEndpoint> {
+@ConfigurationProperties(prefix = "endpoints.druid")
+public class DruidDataSourceEndpoint extends AbstractEndpoint>> {
public DruidDataSourceEndpoint() {
super("druid");
}
- @Autowired
- private List dataSourceList;
+ private static final DruidStatManagerFacade statManager = DruidStatManagerFacade.getInstance();
@Override
- public Set invoke() {
- if (dataSourceList == null || dataSourceList.isEmpty()) {
- return Collections.singleton(Health.outOfService()
- .withException(new IllegalStateException("Can not find bean with type 'DruidDataSource'!"))
- .build());
- }
- DruidStatManagerFacade statManager = DruidStatManagerFacade.getInstance();
- return statManager.getDataSourceStatDataList().stream()
- .map(ds -> new Health.Builder(Status.UP, ds).build())
- .collect(Collectors.toSet());
-
-// return dataSourceList.stream()
-// .map(DruidDataSource::getName)
-// .map(statManager::getDruidDataSourceByName)
-// .map(m -> new Health.Builder(Status.UP, m).build())
-// .collect(Collectors.toSet());
-// return dataSourceList.stream()
-// .map(gson::toJson)
-// .map(this::readValueAsMap)
-// .map(m -> new Health.Builder(Status.UP, m).build())
-// .collect(Collectors.toSet());
+ public List
+
+ org.projectlombok
+ lombok
+
org.springframework.boot
spring-boot-starter-test
diff --git a/druid-spring-boot-samples/src/main/java/com/github/trang/druid/DruidSpringBootStarterApplication.java b/druid-spring-boot-samples/src/main/java/com/github/trang/druid/DruidSpringBootStarterApplication.java
index 0875b5f..e3ff5a9 100644
--- a/druid-spring-boot-samples/src/main/java/com/github/trang/druid/DruidSpringBootStarterApplication.java
+++ b/druid-spring-boot-samples/src/main/java/com/github/trang/druid/DruidSpringBootStarterApplication.java
@@ -29,7 +29,8 @@ public class DruidSpringBootStarterApplication implements CommandLineRunner {
public void run(String... args) throws Exception {
Gson gson = new Gson();
cityMapper.findAll().stream()
- .map(gson::toJson).forEach(System.out::println);
+ .map(gson::toJson)
+ .forEach(System.out::println);
}
}
\ No newline at end of file
diff --git a/druid-spring-boot-samples/src/main/java/com/github/trang/druid/config/SpringDataSourceConfig.java b/druid-spring-boot-samples/src/main/java/com/github/trang/druid/config/SpringDataSourceConfig.java
index 4f8e216..1ef13f4 100644
--- a/druid-spring-boot-samples/src/main/java/com/github/trang/druid/config/SpringDataSourceConfig.java
+++ b/druid-spring-boot-samples/src/main/java/com/github/trang/druid/config/SpringDataSourceConfig.java
@@ -1,9 +1,8 @@
package com.github.trang.druid.config;
import com.alibaba.druid.pool.DruidDataSource;
-import com.github.trang.druid.datasource.DruidMultiDataSource;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import com.github.trang.druid.autoconfigure.datasource.DruidDataSource2;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -21,12 +20,11 @@ import java.util.Map;
*/
@Configuration
@Profile({"dynamic", "dynamic-dev-yaml", "dynamic-dev-props"})
+@Slf4j
public class SpringDataSourceConfig {
- private static final Logger log = LoggerFactory.getLogger(SpringDataSourceConfig.class);
-
/**
- * 第一个数据源,注意数据源类型为 #{@link com.github.trang.druid.datasource.DruidMultiDataSource}
+ * 第一个数据源,注意数据源类型为 #{@link DruidDataSource2}
*
* `spring.datasource.druid.one` 前缀的配置会注入到该 Bean,同时会继承 `spring.datasource.druid`
* 前缀的配置,若名称相同则会被 `spring.datasource.druid.one` 覆盖
@@ -35,7 +33,7 @@ public class SpringDataSourceConfig {
@ConfigurationProperties("spring.datasource.druid.one")
public DruidDataSource firstDataSource() {
log.debug("druid first-data-source init...");
- return new DruidMultiDataSource();
+ return new DruidDataSource2();
}
/**
@@ -45,7 +43,7 @@ public class SpringDataSourceConfig {
@ConfigurationProperties("spring.datasource.druid.two")
public DruidDataSource secondDataSource() {
log.debug("druid second-data-source init...");
- return new DruidMultiDataSource();
+ return new DruidDataSource2();
}
@Bean
diff --git a/druid-spring-boot-samples/src/main/resources/application.yml b/druid-spring-boot-samples/src/main/resources/application.yml
index bda7656..c017972 100644
--- a/druid-spring-boot-samples/src/main/resources/application.yml
+++ b/druid-spring-boot-samples/src/main/resources/application.yml
@@ -22,7 +22,7 @@ spring:
password: Biyu5YzU+6sxDRbmWEa3B2uUcImzDo0BuXjTlL505+/pTb+/0Oqd3ou1R6J8+9Fy3CYrM18nBDqf6wAaPgUGOg==
schema: classpath:/import.sql
druid:
- # spring.datasource.druid 前缀的配置将注入到 DruidParentDataSource,作为公共参数
+ # spring.datasource.druid 前缀的配置将注入到 DruidDataSource2Support,作为公共参数
initial-size: 1
min-idle: 1
max-active: 10
@@ -78,7 +78,7 @@ spring:
encoding:
force: true
converters:
- preferred-json-mapper: gson
+ preferred-json-mapper: jackson
mybatis:
type-aliases-package: com.github.trang.druid.model
@@ -87,6 +87,23 @@ mybatis:
debug: false
+spring:
+ profiles: actuator
+
+management:
+ security:
+ enabled: false
+
+endpoints:
+ actuator:
+ enabled: true
+ druid:
+ enabled: true
+
+---
+
+debug: false
+
spring:
profiles: default
diff --git a/druid-spring-boot-starter/pom.xml b/druid-spring-boot-starter/pom.xml
index 67cf1999..504dd9d 100644
--- a/druid-spring-boot-starter/pom.xml
+++ b/druid-spring-boot-starter/pom.xml
@@ -17,6 +17,10 @@
com.github.drtrang
druid-spring-boot-autoconfigure
+
+ org.slf4j
+ slf4j-api
+
org.springframework
spring-jdbc
@@ -26,8 +30,8 @@
druid
- org.slf4j
- slf4j-api
+ org.projectlombok
+ lombok
diff --git a/druid-spring-boot-starter/src/main/resources/META-INF/spring.provides b/druid-spring-boot-starter/src/main/resources/META-INF/spring.provides
index eb5a2d4..7a8b374 100644
--- a/druid-spring-boot-starter/src/main/resources/META-INF/spring.provides
+++ b/druid-spring-boot-starter/src/main/resources/META-INF/spring.provides
@@ -1 +1 @@
-provides: druid,druid-spring-boot-autoconfigure,spring-boot-autoconfigure,spring-jdbc
\ No newline at end of file
+provides: druid,druid-spring-boot-autoconfigure,spring-boot-autoconfigure,spring-jdbc,slf4j-api,lombok
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 871a8eb..4ea4fdf 100644
--- a/pom.xml
+++ b/pom.xml
@@ -52,15 +52,17 @@
1.3.1
1.5.7.RELEASE
- 3.0.1
+ 3.0.2
3.0.0
3.0.2
- 3.6.1
- 1.4.1
- 2.20
+ 3.7.0
+
+ 3.0.0-M1
+ 2.20.1
3.0.2
3.0.1
- 2.10.4
+
+ 3.0.0-M1
2.5.2
2.8.2
2.5.3
@@ -147,6 +149,7 @@
true
true
+ true
@@ -196,7 +199,7 @@
- UTF-8
+ ${project.build.sourceEncoding}
-Xdoclint:none
@@ -238,8 +241,6 @@
- ${project.artifactId}
- package
maven-dependency-plugin
@@ -277,6 +278,7 @@
true
${project.build.sourceEncoding}
+ true