diff --git a/druid-spring-boot-actuator/druid-spring-boot-actuator-autoconfigure/pom.xml b/druid-spring-boot-actuator/druid-spring-boot-actuator-autoconfigure/pom.xml
index 556efec..a0647a4 100644
--- a/druid-spring-boot-actuator/druid-spring-boot-actuator-autoconfigure/pom.xml
+++ b/druid-spring-boot-actuator/druid-spring-boot-actuator-autoconfigure/pom.xml
@@ -7,7 +7,7 @@
com.github.drtrang
druid-spring-boot-actuator
- 1.1.2
+ 1.1.3-SNAPSHOT
druid-spring-boot-actuator-autoconfigure
diff --git a/druid-spring-boot-actuator/druid-spring-boot-actuator-starter/pom.xml b/druid-spring-boot-actuator/druid-spring-boot-actuator-starter/pom.xml
index 0c9da63..0f434de 100644
--- a/druid-spring-boot-actuator/druid-spring-boot-actuator-starter/pom.xml
+++ b/druid-spring-boot-actuator/druid-spring-boot-actuator-starter/pom.xml
@@ -7,7 +7,7 @@
com.github.drtrang
druid-spring-boot-actuator
- 1.1.2
+ 1.1.3-SNAPSHOT
druid-spring-boot-actuator-starter
diff --git a/druid-spring-boot-actuator/pom.xml b/druid-spring-boot-actuator/pom.xml
index c7b7ebe..cd2c5c6 100644
--- a/druid-spring-boot-actuator/pom.xml
+++ b/druid-spring-boot-actuator/pom.xml
@@ -7,7 +7,7 @@
com.github.drtrang
druid-spring-boot-parent
- 1.1.2
+ 1.1.3-SNAPSHOT
druid-spring-boot-actuator
diff --git a/druid-spring-boot-example/druid-spring-boot-mybatis-example/pom.xml b/druid-spring-boot-example/druid-spring-boot-mybatis-example/pom.xml
index 3dd44c9..6cf923a 100644
--- a/druid-spring-boot-example/druid-spring-boot-mybatis-example/pom.xml
+++ b/druid-spring-boot-example/druid-spring-boot-mybatis-example/pom.xml
@@ -7,7 +7,7 @@
com.github.drtrang
druid-spring-boot-example
- 1.1.2
+ 1.1.3-SNAPSHOT
druid-spring-boot-mybatis-example
diff --git a/druid-spring-boot-example/druid-spring-boot-mybatis-example/src/main/java/com/github/trang/druid/example/DruidSpringBootStarterApplication.java b/druid-spring-boot-example/druid-spring-boot-mybatis-example/src/main/java/com/github/trang/druid/example/DruidSpringBootStarterApplication.java
index cd5f3d6..c927d81 100644
--- a/druid-spring-boot-example/druid-spring-boot-mybatis-example/src/main/java/com/github/trang/druid/example/DruidSpringBootStarterApplication.java
+++ b/druid-spring-boot-example/druid-spring-boot-mybatis-example/src/main/java/com/github/trang/druid/example/DruidSpringBootStarterApplication.java
@@ -14,7 +14,7 @@ import org.springframework.context.ApplicationContext;
*
* @author trang
*/
-@SpringBootApplication(scanBasePackages = "com.github.trang.druid.example")
+@SpringBootApplication
@MapperScan("com.github.trang.druid.example.mapper")
public class DruidSpringBootStarterApplication implements CommandLineRunner {
diff --git a/druid-spring-boot-example/pom.xml b/druid-spring-boot-example/pom.xml
index d3c0f3a..e8456fb 100644
--- a/druid-spring-boot-example/pom.xml
+++ b/druid-spring-boot-example/pom.xml
@@ -7,7 +7,7 @@
com.github.drtrang
druid-spring-boot-parent
- 1.1.2
+ 1.1.3-SNAPSHOT
druid-spring-boot-example
diff --git a/druid-spring-boot/druid-spring-boot-autoconfigure/pom.xml b/druid-spring-boot/druid-spring-boot-autoconfigure/pom.xml
index ce4fd39..4e6cd5e 100644
--- a/druid-spring-boot/druid-spring-boot-autoconfigure/pom.xml
+++ b/druid-spring-boot/druid-spring-boot-autoconfigure/pom.xml
@@ -7,7 +7,7 @@
com.github.drtrang
druid-spring-boot
- 1.1.2
+ 1.1.3-SNAPSHOT
druid-spring-boot-autoconfigure
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 3d3105f..9ad3d08 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
@@ -12,27 +12,20 @@ import com.alibaba.druid.wall.WallFilter;
import com.github.trang.druid.autoconfigure.datasource.DruidDataSource2;
import com.github.trang.druid.autoconfigure.properties.DruidDataSourceProperties;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.BeansException;
-import org.springframework.beans.factory.BeanFactory;
-import org.springframework.beans.factory.BeanFactoryAware;
-import org.springframework.beans.factory.config.BeanDefinition;
-import org.springframework.beans.factory.support.BeanDefinitionBuilder;
-import org.springframework.beans.factory.support.DefaultListableBeanFactory;
+import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
-import org.springframework.boot.autoconfigure.condition.*;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
-import org.springframework.boot.bind.PropertySourcesBinder;
-import org.springframework.boot.bind.RelaxedPropertyResolver;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.context.EnvironmentAware;
-import org.springframework.context.annotation.*;
-import org.springframework.core.env.ConfigurableEnvironment;
-import org.springframework.core.env.Environment;
-import org.springframework.core.type.AnnotatedTypeMetadata;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.DependsOn;
+import org.springframework.context.annotation.Import;
-import javax.sql.DataSource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -49,12 +42,9 @@ import static com.github.trang.druid.autoconfigure.properties.DruidDataSourcePro
@ConditionalOnClass(DruidDataSource.class)
@AutoConfigureBefore(DataSourceAutoConfiguration.class)
@EnableConfigurationProperties({DataSourceProperties.class, DruidDataSourceProperties.class})
-@Import({DruidServletConfiguration.class, DruidStatConfiguration.class})
+@Import({DruidDataSourceConfiguration.class, DruidServletConfiguration.class, DruidStatConfiguration.class})
@Slf4j
-public class DruidAutoConfiguration implements BeanFactoryAware, EnvironmentAware {
-
- private DefaultListableBeanFactory beanFactory;
- private ConfigurableEnvironment environment;
+public class DruidAutoConfiguration {
@Bean
@ConditionalOnProperty(prefix = DRUID_STAT_FILTER_PREFIX, name = "enabled", havingValue = "true", matchIfMissing = true)
@@ -120,52 +110,9 @@ public class DruidAutoConfiguration implements BeanFactoryAware, EnvironmentAwar
return new CommonsLogFilter();
}
- /**
- * 自动注入单数据源
- *
- * @condition 1. BeanFactory 中不存在 DruidDataSource 类型的 bean
- * @condition 2. BeanFactory 中不存在 'dataSource' 名称的 bean
- * @condition 3. 配置文件中不存在以 'spring.datasource.druid.data-source' 开头的属性
- * @return DruidDataSource dataSource
- */
- @Bean(initMethod = "init", destroyMethod = "close")
- @ConditionalOnMissingBean(value = DataSource.class, name = "dataSource")
- @Conditional(DataSourceCondition.class)
- public DruidDataSource dataSource() {
- log.debug("druid data-source init...");
- return new DruidDataSource2();
- }
-
- /**
- * 自动注入多数据源
- *
- * @condition 1. BeanFactory 中不存在 DruidDataSource 类型的 bean
- * @condition 2. 配置文件中存在以 'spring.datasource.druid.data-source' 开头的属性
- * @return Map dataSourceMap/druidDataSourceMap
- */
@Bean
- @Conditional(DataSourcesCondition.class)
- public Map dataSourceMap(DruidDataSourceProperties druidDataSourceProperties) {
- druidDataSourceProperties.getDataSources().forEach((dataSourceName, dataSourceConfig) -> {
- // 构造 BeanDefinition,通过 DruidDataSource2 实现继承 'spring.datasource.druid' 的配置
- BeanDefinition beanDefinition = BeanDefinitionBuilder.genericBeanDefinition(DruidDataSource2.class)
- .setInitMethodName("init")
- .setDestroyMethodName("close")
- .getBeanDefinition();
- // 注册 BeanDefinition
- beanFactory.registerBeanDefinition(dataSourceName, beanDefinition);
- String lowerCaseName = dataSourceName.toLowerCase();
- // 当 beanName 不是以 datasource 结尾时,增加别名
- if (!lowerCaseName.endsWith("datasource") && !lowerCaseName.endsWith("data-source")) {
- // 注册 Alias
- beanFactory.registerAlias(dataSourceName, dataSourceName + "DataSource");
- }
- // 将 'spring.datasource.druid.data-sources.$dataSourceName' 的配置绑定到 Bean
- DruidDataSource2 dataSource = beanFactory.getBean(dataSourceName, DruidDataSource2.class);
- PropertySourcesBinder propertySourcesBinder = new PropertySourcesBinder(environment);
- propertySourcesBinder.bindTo("spring.datasource.druid.data-sources." + dataSourceName, dataSource);
- log.debug("druid {}-data-source init...", dataSourceName);
- });
+ @ConditionalOnBean(DruidDataSource.class)
+ public Map dataSourceMap(ConfigurableListableBeanFactory beanFactory) {
return new HashMap<>(beanFactory.getBeansOfType(DruidDataSource2.class));
}
@@ -183,42 +130,4 @@ public class DruidAutoConfiguration implements BeanFactoryAware, EnvironmentAwar
return new ArrayList<>(dataSourceMap.values());
}
- static class DataSourceCondition extends SpringBootCondition {
-
- @Override
- public ConditionOutcome getMatchOutcome(ConditionContext context, AnnotatedTypeMetadata metadata) {
- RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(context.getEnvironment(), "spring.datasource.druid.");
- Map properties = resolver.getSubProperties("data-sources");
- if (!properties.isEmpty()) {
- return ConditionOutcome.noMatch("find 'data-sources' properties");
- }
- return ConditionOutcome.match();
- }
-
- }
-
- static class DataSourcesCondition extends SpringBootCondition {
-
- @Override
- public ConditionOutcome getMatchOutcome(ConditionContext context, AnnotatedTypeMetadata metadata) {
- RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(context.getEnvironment(), "spring.datasource.druid.");
- Map properties = resolver.getSubProperties("data-sources");
- if (properties.isEmpty()) {
- return ConditionOutcome.noMatch("can't find 'data-sources' properties");
- }
- return ConditionOutcome.match();
- }
-
- }
-
- @Override
- public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
- this.beanFactory = (DefaultListableBeanFactory)beanFactory;
- }
-
- @Override
- public void setEnvironment(Environment environment) {
- this.environment = (ConfigurableEnvironment)environment;
- }
-
}
\ 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 fabd2ae..c9bd4c7 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
@@ -4,7 +4,6 @@ import com.github.trang.druid.autoconfigure.datasource.DruidDataSource2;
import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.boot.context.properties.NestedConfigurationProperty;
import java.util.HashMap;
import java.util.Map;
@@ -33,17 +32,14 @@ public class DruidDataSourceProperties {
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";
- @NestedConfigurationProperty
DruidConfigFilterProperties config = new DruidConfigFilterProperties();
- @NestedConfigurationProperty
DruidStatViewServletProperties statViewServlet = new DruidStatViewServletProperties();
- @NestedConfigurationProperty
DruidWebStatProperties webStat = new DruidWebStatProperties();
- @NestedConfigurationProperty
DruidAopStatProperties aopStat = new DruidAopStatProperties();
Map dataSources = new HashMap<>(16);
- @Getter@Setter
+ @Getter
+ @Setter
public static class DruidConfigFilterProperties {
/** 是否开启 druid config-filter,默认否 */
private boolean enabled;
diff --git a/druid-spring-boot/druid-spring-boot-starter/pom.xml b/druid-spring-boot/druid-spring-boot-starter/pom.xml
index 2c30f10..a8c7cd7 100644
--- a/druid-spring-boot/druid-spring-boot-starter/pom.xml
+++ b/druid-spring-boot/druid-spring-boot-starter/pom.xml
@@ -7,7 +7,7 @@
com.github.drtrang
druid-spring-boot
- 1.1.2
+ 1.1.3-SNAPSHOT
druid-spring-boot-starter
diff --git a/druid-spring-boot/pom.xml b/druid-spring-boot/pom.xml
index 405e526..a6bf39d 100644
--- a/druid-spring-boot/pom.xml
+++ b/druid-spring-boot/pom.xml
@@ -7,7 +7,7 @@
com.github.drtrang
druid-spring-boot-parent
- 1.1.2
+ 1.1.3-SNAPSHOT
druid-spring-boot
diff --git a/pom.xml b/pom.xml
index 28eb06f..ed8f203 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
com.github.drtrang
druid-spring-boot-parent
- 1.1.2
+ 1.1.3-SNAPSHOT
pom
Druid Spring Boot Starter