From 59f86f0f4220357f93365342d5e30e2bbad56e3b Mon Sep 17 00:00:00 2001 From: dk Date: Mon, 18 Mar 2019 14:01:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=8Espring=E4=B8=8A=E4=B8=8B=E6=96=87?= =?UTF-8?q?=E4=B8=AD=E5=AF=BB=E6=89=BE=E5=85=A8=E9=83=A8Filter=E5=B9=B6?= =?UTF-8?q?=E6=B3=A8=E5=85=A5=EF=BC=8C=E4=BB=A5=E6=9C=9F=E8=AE=A9=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89Filter=E6=88=96=E5=80=9F=E5=8A=A9spring?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E7=9A=84Filter=E6=9B=B4=E6=98=93=E8=9E=8D?= =?UTF-8?q?=E5=85=A5druid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../autoconfigure/DruidDataSourceWrapper.java | 50 ++----------------- .../boot/testcase/DruidFilterTestCase.java | 39 ++++++++++++++- 2 files changed, 42 insertions(+), 47 deletions(-) diff --git a/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceWrapper.java b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceWrapper.java index 2625502bfa..f93abac2c7 100644 --- a/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceWrapper.java +++ b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceWrapper.java @@ -15,21 +15,16 @@ */ package com.alibaba.druid.spring.boot.autoconfigure; -import com.alibaba.druid.filter.config.ConfigFilter; -import com.alibaba.druid.filter.encoding.EncodingConvertFilter; -import com.alibaba.druid.filter.logging.CommonsLogFilter; -import com.alibaba.druid.filter.logging.Log4j2Filter; -import com.alibaba.druid.filter.logging.Log4jFilter; -import com.alibaba.druid.filter.logging.Slf4jLogFilter; -import com.alibaba.druid.filter.stat.StatFilter; +import com.alibaba.druid.filter.Filter; import com.alibaba.druid.pool.DruidDataSource; -import com.alibaba.druid.wall.WallFilter; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties; import org.springframework.boot.context.properties.ConfigurationProperties; +import java.util.List; + /** * @author lihengming [89921218@qq.com] */ @@ -56,43 +51,8 @@ class DruidDataSourceWrapper extends DruidDataSource implements InitializingBean } @Autowired(required = false) - public void addStatFilter(StatFilter statFilter) { - super.filters.add(statFilter); - } - - @Autowired(required = false) - public void addConfigFilter(ConfigFilter configFilter) { - super.filters.add(configFilter); - } - - @Autowired(required = false) - public void addEncodingConvertFilter(EncodingConvertFilter encodingConvertFilter) { - super.filters.add(encodingConvertFilter); - } - - @Autowired(required = false) - public void addSlf4jLogFilter(Slf4jLogFilter slf4jLogFilter) { - super.filters.add(slf4jLogFilter); - } - - @Autowired(required = false) - public void addLog4jFilter(Log4jFilter log4jFilter) { - super.filters.add(log4jFilter); - } - - @Autowired(required = false) - public void addLog4j2Filter(Log4j2Filter log4j2Filter) { - super.filters.add(log4j2Filter); - } - - @Autowired(required = false) - public void addCommonsLogFilter(CommonsLogFilter commonsLogFilter) { - super.filters.add(commonsLogFilter); - } - - @Autowired(required = false) - public void addWallFilter(WallFilter wallFilter) { - super.filters.add(wallFilter); + public void autoAddFilters(List filtes){ + super.filters.addAll(filtes); } /** diff --git a/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/testcase/DruidFilterTestCase.java b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/testcase/DruidFilterTestCase.java index ec62ea690d..ca50620fb9 100644 --- a/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/testcase/DruidFilterTestCase.java +++ b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/testcase/DruidFilterTestCase.java @@ -5,12 +5,19 @@ import java.util.List; import javax.annotation.Resource; import com.alibaba.druid.filter.Filter; +import com.alibaba.druid.filter.FilterAdapter; import com.alibaba.druid.pool.DruidDataSource; +import com.alibaba.druid.proxy.jdbc.DataSourceProxy; import com.alibaba.druid.spring.boot.demo.DemoApplication; import org.junit.Test; import org.junit.runner.RunWith; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.stereotype.Component; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.junit4.SpringRunner; @@ -20,7 +27,7 @@ import static org.assertj.core.api.Assertions.assertThat; * @author lihengming [89921218@qq.com] */ @RunWith(SpringRunner.class) -@SpringBootTest(classes = DemoApplication.class) +@SpringBootTest(classes = {DemoApplication.class, DruidFilterTestCase.Config.class}) @ActiveProfiles("filter") public class DruidFilterTestCase { @Resource @@ -29,6 +36,34 @@ public class DruidFilterTestCase { @Test public void test() { List filters = dataSource.getProxyFilters(); - assertThat(filters.size()).isEqualTo(3); + //配置文件中3个,自定义1个,共4个 + assertThat(filters.size()).isEqualTo(4); + } + + /** + * @author dk + * 用于此测试的一个配置,仅加入了一个自定义的Filter,此Filter打印出数据库连接url + */ + @Configuration + @ComponentScan + public static class Config{ + + /** + * @author dk + */ + @Component + public static class SomeCustomFilter extends FilterAdapter { + + private static Logger logger = LoggerFactory.getLogger(SomeCustomFilter.class); + + @Override + public void init(DataSourceProxy dataSourceProxy){ + if (!(dataSourceProxy instanceof DruidDataSource)) { + logger.error("ConfigLoader only support DruidDataSource"); + } + DruidDataSource dataSource = (DruidDataSource) dataSourceProxy; + logger.info("db configuration: url="+ dataSource.getUrl()); + } + } } }