mirror of
https://github.com/drtrang/druid-spring-boot.git
synced 2026-11-14 18:22:40 +00:00
1.1.2
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>com.github.drtrang</groupId>
|
||||
<artifactId>druid-spring-boot</artifactId>
|
||||
<version>1.1.1</version>
|
||||
<version>1.1.2-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>druid-spring-boot-actuator-autoconfigure</artifactId>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>com.github.drtrang</groupId>
|
||||
<artifactId>druid-spring-boot</artifactId>
|
||||
<version>1.1.1</version>
|
||||
<version>1.1.2-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>druid-spring-boot-actuator-starter</artifactId>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>com.github.drtrang</groupId>
|
||||
<artifactId>druid-spring-boot</artifactId>
|
||||
<version>1.1.1</version>
|
||||
<version>1.1.2-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>druid-spring-boot-actuator</artifactId>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>com.github.drtrang</groupId>
|
||||
<artifactId>druid-spring-boot</artifactId>
|
||||
<version>1.1.1</version>
|
||||
<version>1.1.2-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>druid-spring-boot-autoconfigure</artifactId>
|
||||
|
||||
+38
-10
@@ -9,12 +9,13 @@ import com.alibaba.druid.filter.stat.StatFilter;
|
||||
import com.alibaba.druid.pool.DruidDataSource;
|
||||
import com.alibaba.druid.wall.WallConfig;
|
||||
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.factory.InitializingBean;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
|
||||
@@ -23,8 +24,7 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Import;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
import org.springframework.core.env.ConfigurableEnvironment;
|
||||
|
||||
import static com.github.trang.druid.autoconfigure.properties.DruidDataSourceProperties.*;
|
||||
|
||||
@@ -39,7 +39,7 @@ import static com.github.trang.druid.autoconfigure.properties.DruidDataSourcePro
|
||||
@EnableConfigurationProperties({DataSourceProperties.class, DruidDataSourceProperties.class})
|
||||
@Import({DruidServletConfiguration.class, DruidStatConfiguration.class})
|
||||
@Slf4j
|
||||
public class DruidAutoConfiguration {
|
||||
public class DruidAutoConfiguration implements InitializingBean {
|
||||
|
||||
@Bean
|
||||
@ConditionalOnProperty(prefix = DRUID_STAT_FILTER_PREFIX, name = "enabled", havingValue = "true", matchIfMissing = true)
|
||||
@@ -105,11 +105,39 @@ public class DruidAutoConfiguration {
|
||||
return new CommonsLogFilter();
|
||||
}
|
||||
|
||||
@Bean(initMethod = "init", destroyMethod = "close")
|
||||
@ConditionalOnMissingBean(DataSource.class)
|
||||
public DruidDataSource dataSource() {
|
||||
log.debug("druid data-source init...");
|
||||
return new DruidDataSource2();
|
||||
@Autowired
|
||||
private DefaultListableBeanFactory beanFactory;
|
||||
@Autowired
|
||||
private ConfigurableEnvironment environment;
|
||||
@Autowired
|
||||
private DruidDataSourceProperties druidDataSourceProperties;
|
||||
|
||||
private static final String PRIMARY_DATA_SOURCE_NAME = "dataSource";
|
||||
private static final String DATA_SOURCE_NAME_SUFFIX = "DataSource";
|
||||
|
||||
@Override
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
// if (druidDataSourceProperties.getDataSources().isEmpty() && !beanFactory.containsBean(PRIMARY_DATA_SOURCE_NAME)) {
|
||||
// BeanDefinition beanDefinition = BeanDefinitionBuilder.genericBeanDefinition(DruidDataSource2.class)
|
||||
// .setInitMethodName("init")
|
||||
// .setDestroyMethodName("close")
|
||||
// .getBeanDefinition();
|
||||
// beanFactory.registerBeanDefinition(PRIMARY_DATA_SOURCE_NAME, beanDefinition);
|
||||
// log.debug("druid data-source init...");
|
||||
// } else {
|
||||
// druidDataSourceProperties.getDataSources().forEach((dataSourceName, dataSourceConfig) -> {
|
||||
// BeanDefinition eachBeanDefinition = BeanDefinitionBuilder.genericBeanDefinition(DruidDataSource2.class)
|
||||
// .setInitMethodName("init")
|
||||
// .setDestroyMethodName("close")
|
||||
// .getBeanDefinition();
|
||||
// String beanName = dataSourceName + DATA_SOURCE_NAME_SUFFIX;
|
||||
// beanFactory.registerBeanDefinition(beanName, eachBeanDefinition);
|
||||
// DruidDataSource2 eachDataSource = beanFactory.getBean(beanName, DruidDataSource2.class);
|
||||
// PropertySourcesBinder propertySourcesBinder = new PropertySourcesBinder(environment);
|
||||
// propertySourcesBinder.bindTo("spring.datasource.druid.data-sources." + dataSourceName, eachDataSource);
|
||||
// log.debug("druid {}-data-source init...", dataSourceName);
|
||||
// });
|
||||
// }
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -75,7 +75,7 @@ public abstract class DruidDataSource2Support extends DruidDataSource {
|
||||
List<Filter> proxyFilters = super.getProxyFilters();
|
||||
Optional.ofNullable(druidFilters)
|
||||
.filter(filters -> !filters.isEmpty())
|
||||
.ifPresent(dfs -> dfs.stream()
|
||||
.ifPresent(filters -> filters.stream()
|
||||
.filter(Objects::nonNull)
|
||||
.filter(filter -> !proxyFilters.contains(filter))
|
||||
.forEach(proxyFilters::add)
|
||||
|
||||
+6
@@ -1,10 +1,14 @@
|
||||
package com.github.trang.druid.autoconfigure.properties;
|
||||
|
||||
import com.alibaba.druid.pool.DruidDataSource;
|
||||
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;
|
||||
|
||||
import static com.github.trang.druid.autoconfigure.properties.DruidDataSourceProperties.DRUID_DATA_SOURCE_PREFIX;
|
||||
|
||||
/**
|
||||
@@ -40,6 +44,8 @@ public class DruidDataSourceProperties {
|
||||
DruidWebStatProperties webStat = new DruidWebStatProperties();
|
||||
@NestedConfigurationProperty
|
||||
DruidAopStatProperties aopStat = new DruidAopStatProperties();
|
||||
@NestedConfigurationProperty
|
||||
Map<String, DruidDataSource> dataSources = new HashMap<>(16);
|
||||
|
||||
@Getter@Setter
|
||||
public static class DruidConfigFilterProperties {
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>com.github.drtrang</groupId>
|
||||
<artifactId>druid-spring-boot</artifactId>
|
||||
<version>1.1.1</version>
|
||||
<version>1.1.2-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>druid-spring-boot-samples</artifactId>
|
||||
@@ -35,10 +35,10 @@
|
||||
<groupId>com.github.drtrang</groupId>
|
||||
<artifactId>druid-spring-boot-starter</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<!--<dependency>
|
||||
<groupId>com.github.drtrang</groupId>
|
||||
<artifactId>druid-spring-boot-actuator-starter</artifactId>
|
||||
</dependency>
|
||||
</dependency>-->
|
||||
<dependency>
|
||||
<groupId>com.h2database</groupId>
|
||||
<artifactId>h2</artifactId>
|
||||
|
||||
+8
-8
@@ -30,8 +30,8 @@ public class SpringDataSourceConfig {
|
||||
* 前缀的配置,若名称相同则会被 `spring.datasource.druid.one` 覆盖
|
||||
*/
|
||||
@Bean(initMethod = "init", destroyMethod = "close")
|
||||
@ConfigurationProperties("spring.datasource.druid.one")
|
||||
public DruidDataSource firstDataSource() {
|
||||
@ConfigurationProperties("spring.datasource.druid.data-sources.one")
|
||||
public DruidDataSource oneDataSource() {
|
||||
log.debug("druid first-data-source init...");
|
||||
return new DruidDataSource2();
|
||||
}
|
||||
@@ -40,19 +40,19 @@ public class SpringDataSourceConfig {
|
||||
* 第二个数据源,若还有其它数据源可以继续增加
|
||||
*/
|
||||
@Bean(initMethod = "init", destroyMethod = "close")
|
||||
@ConfigurationProperties("spring.datasource.druid.two")
|
||||
public DruidDataSource secondDataSource() {
|
||||
@ConfigurationProperties("spring.datasource.druid.data-sources.two")
|
||||
public DruidDataSource twoDataSource() {
|
||||
log.debug("druid second-data-source init...");
|
||||
return new DruidDataSource2();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@Primary
|
||||
public DynamicDataSource dataSource(DruidDataSource firstDataSource, DruidDataSource secondDataSource) {
|
||||
public DynamicDataSource dataSource(DruidDataSource oneDataSource, DruidDataSource twoDataSource) {
|
||||
Map<String, DataSource> targetDataSources = new HashMap<>(8);
|
||||
targetDataSources.put(firstDataSource.getName(), firstDataSource);
|
||||
targetDataSources.put(secondDataSource.getName(), secondDataSource);
|
||||
return new DynamicDataSource(firstDataSource, targetDataSources);
|
||||
targetDataSources.put(oneDataSource.getName(), oneDataSource);
|
||||
targetDataSources.put(twoDataSource.getName(), twoDataSource);
|
||||
return new DynamicDataSource(oneDataSource, targetDataSources);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
debug: false
|
||||
|
||||
spring:
|
||||
autoconfigure:
|
||||
exclude:
|
||||
# 多数据源场景会导致 `javax.sql.DataSource` 和 `org.springframework.boot.autoconfigure.jdbc.DataSourceInitializer`
|
||||
# 循环依赖,所以需要手动排除 `org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration`
|
||||
- org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
|
||||
datasource:
|
||||
druid:
|
||||
# 继承 spring.datasource.druid 前缀的配置,同时可以自定义配置,若名称相同则覆盖父配置
|
||||
data-sources:
|
||||
one:
|
||||
max-active: 50
|
||||
max-open-prepared-statements: 50
|
||||
two:
|
||||
max-active: 25
|
||||
max-open-prepared-statements: 25
|
||||
@@ -11,7 +11,7 @@ logging:
|
||||
spring:
|
||||
profiles:
|
||||
# 默认环境为 default,多数据源演示请改为 dynamic
|
||||
active: default
|
||||
active: dynamic
|
||||
output:
|
||||
ansi:
|
||||
enabled: detect
|
||||
@@ -113,14 +113,13 @@ spring:
|
||||
datasource:
|
||||
druid:
|
||||
# 继承 spring.datasource.druid 前缀的配置,同时可以自定义配置,若名称相同则覆盖父配置
|
||||
one:
|
||||
name: one
|
||||
max-active: 50
|
||||
max-open-prepared-statements: 50
|
||||
two:
|
||||
name: two
|
||||
max-active: 25
|
||||
max-open-prepared-statements: 25
|
||||
data-sources:
|
||||
one:
|
||||
max-active: 50
|
||||
max-open-prepared-statements: 50
|
||||
two:
|
||||
max-active: 25
|
||||
max-open-prepared-statements: 25
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<parent>
|
||||
<groupId>com.github.drtrang</groupId>
|
||||
<artifactId>druid-spring-boot</artifactId>
|
||||
<version>1.1.1</version>
|
||||
<version>1.1.2-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>druid-spring-boot-starter</artifactId>
|
||||
|
||||
Reference in New Issue
Block a user