diff --git a/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.java b/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.java index 65c1842bdf..aa61a3a9c0 100644 --- a/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.java +++ b/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.java @@ -26,16 +26,15 @@ import org.springframework.context.annotation.Import; import org.springframework.core.env.Environment; import javax.sql.DataSource; +import java.sql.SQLException; /** - * The Druid data source auto configure. - * * @author lihengming<89921218@qq.com> */ @Configuration @ConditionalOnClass(com.alibaba.druid.pool.DruidDataSource.class) @EnableConfigurationProperties(DruidStatProperties.class) -@Import({DruidSpringAopConfiguration.class, DruidStatViewServletConfiguration.class, DruidStatFilterConfiguration.class}) +@Import({DruidSpringAopConfiguration.class, DruidStatViewServletConfiguration.class, DruidWebStatFilterConfiguration.class}) public class DruidDataSourceAutoConfigure { @Bean @@ -44,7 +43,7 @@ public class DruidDataSourceAutoConfigure { public DataSource dataSource(Environment env) { DruidDataSource dataSource = DruidDataSourceBuilder.create().build(); - //if not found prefix spring.datasource.druid property,spring.datasource prefix property will be used + //if not found prefix 'spring.datasource.druid' property,'spring.datasource' prefix property will be used if (dataSource.getUsername() == null) { dataSource.setUsername(env.getProperty("spring.datasource.username")); } @@ -57,6 +56,14 @@ public class DruidDataSourceAutoConfigure { if (dataSource.getDriverClassName() == null) { dataSource.setDriverClassName(env.getProperty("spring.datasource.driver-class-name")); } + //if not found 'spring.datasource.druid.filters' property will set default value on StatViewServlet Enabled + if (env.getProperty("spring.datasource.druid.filters") == null && "true".equals(env.getProperty("spring.datasource.druid.StatViewServlet.enabled"))) { + try { + dataSource.setFilters("stat"); + } catch (SQLException e) { + e.printStackTrace(); + } + } return dataSource; } } diff --git a/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidDataSourceBuilder.java b/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidDataSourceBuilder.java index 63eacebec3..52f2d943c6 100644 --- a/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidDataSourceBuilder.java +++ b/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidDataSourceBuilder.java @@ -25,8 +25,6 @@ import java.util.HashMap; import java.util.Map; /** - * The Druid data source builder. - * * @author lihengming<89921218@qq.com> */ public class DruidDataSourceBuilder { @@ -44,26 +42,6 @@ public class DruidDataSourceBuilder { return dataSource; } - public DruidDataSourceBuilder url(String url) { - this.properties.put("url", url); - return this; - } - - public DruidDataSourceBuilder driverClassName(String driverClassName) { - this.properties.put("driverClassName", driverClassName); - return this; - } - - public DruidDataSourceBuilder username(String username) { - this.properties.put("username", username); - return this; - } - - public DruidDataSourceBuilder password(String password) { - this.properties.put("password", password); - return this; - } - //use RelaxedDataBinder by reflection config druid . private void bind(DruidDataSource result) { MutablePropertyValues properties = new MutablePropertyValues(this.properties); diff --git a/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidSpringAopConfiguration.java b/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidSpringAopConfiguration.java index 98ac4e7545..44a7788e12 100644 --- a/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidSpringAopConfiguration.java +++ b/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidSpringAopConfiguration.java @@ -25,8 +25,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; /** - * The Druid spring aop configuration. - * * @author lihengming<89921218@qq.com> * @see Druid和Spring关联监控配置 */ diff --git a/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidStatProperties.java b/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidStatProperties.java index 3e050c4af3..1dd58d8195 100644 --- a/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidStatProperties.java +++ b/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidStatProperties.java @@ -18,8 +18,6 @@ package com.alibaba.druid.support.spring.boot.autoconfigure; import org.springframework.boot.context.properties.ConfigurationProperties; /** - * The type Druid stat properties. - * * @author lihengming<89921218@qq.com> */ @ConfigurationProperties("spring.datasource.druid") diff --git a/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidStatViewServletConfiguration.java b/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidStatViewServletConfiguration.java index bfb60b8d03..46ef792391 100644 --- a/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidStatViewServletConfiguration.java +++ b/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidStatViewServletConfiguration.java @@ -21,12 +21,10 @@ import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.annotation.Bean; /** - * The Druid stat view servlet configuration. - * * @author lihengming<89921218@qq.com> * @see StatViewServlet配置 */ -@ConditionalOnProperty(name = "spring.datasource.druid.StatViewServlet.enabled", havingValue = "true", matchIfMissing = true) +@ConditionalOnProperty(name = "spring.datasource.druid.StatViewServlet.enabled", havingValue = "true", matchIfMissing = false) public class DruidStatViewServletConfiguration { @Bean public ServletRegistrationBean servletRegistrationBean(DruidStatProperties properties) { diff --git a/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidStatFilterConfiguration.java b/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidWebStatFilterConfiguration.java similarity index 92% rename from src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidStatFilterConfiguration.java rename to src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidWebStatFilterConfiguration.java index 06669f36aa..e63be121da 100644 --- a/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidStatFilterConfiguration.java +++ b/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidWebStatFilterConfiguration.java @@ -21,13 +21,11 @@ import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; /** - * The Druid stat filter configuration. - * * @author lihengming<89921218@qq.com> * @see 配置WebStatFilter */ -@ConditionalOnProperty(name = "spring.datasource.druid.StatFilter.enabled", havingValue = "true", matchIfMissing = true) -public class DruidStatFilterConfiguration { +@ConditionalOnProperty(name = "spring.datasource.druid.WebStatFilter.enabled", havingValue = "true", matchIfMissing = false) +public class DruidWebStatFilterConfiguration { @Bean public FilterRegistrationBean filterRegistrationBean(DruidStatProperties properties) { DruidStatProperties.StatFilter config = properties.getStatFilter(); diff --git a/src/test/resources/config/application.properties b/src/test/resources/config/application.properties index 3235bfbed0..d254f0f181 100644 --- a/src/test/resources/config/application.properties +++ b/src/test/resources/config/application.properties @@ -1,16 +1,19 @@ -# 数据源基础配置,请修改为你的JDBC配置 +# \u6570\u636E\u6E90\u57FA\u7840\u914D\u7F6E spring.datasource.druid.url=jdbc:mysql://localhost:3306/your-db spring.datasource.druid.username=your-username spring.datasource.druid.password=your-password spring.datasource.druid.driver-class-name=com.mysql.jdbc.Driver -# Druid配置,自行增删配置 -spring.datasource.druid.maxActive=20 -spring.datasource.druid.filters=stat,wall,log4j +#\u542F\u7528Druid\u7684\u5185\u7F6E\u76D1\u63A7\u9875\u9762 +spring.datasource.druid.StatViewServlet.enabled=true +#\u542F\u7528Web\u5173\u8054\u76D1\u63A7\u914D\u7F6E +spring.datasource.druid.WebStatFilter.enabled=true +#\u542F\u7528Spring\u5173\u8054\u76D1\u63A7\u914D\u7F6E spring.datasource.druid.aop-patterns=com.alibaba.druid.spring.boot.autoconfigure.service.* +#spring.datasource.druid.maxActive=20 +#spring.datasource.druid.filters=stat,wall,log4j #spring.datasource.druid.StatViewServlet.loginUsername=admin #spring.datasource.druid.StatViewServlet.loginPassword=123456 # JPA spring.jpa.show-sql= true spring.jpa.hibernate.ddl-auto=create-drop -# 如果spring.datasource.druid.aop-patterns要代理的类没有定义interface请设置spring.aop.proxy-target-class=true -# spring.aop.proxy-target-class=true + diff --git a/src/test/resources/config/template.properties b/src/test/resources/config/template.properties index 19e26b176a..224408ee82 100644 --- a/src/test/resources/config/template.properties +++ b/src/test/resources/config/template.properties @@ -1,10 +1,10 @@ -######Druid连接池配置###### -# 数据源基础配置 -spring.datasource.url= #key也可以为也可以spring.datasource.druid.url -spring.datasource.username= #key也可以为也可以spring.datasource.druid.username -spring.datasource.password= #key也可以为也可以spring.datasource.druid.password -spring.datasource.driver-class-name= #key也可以为也可以spring.datasource.druid.driver-class-name,非必填项可通过url解析 -#下面配置说明请参考Druid Github Wiki,配置_DruidDataSource参考配置 +######Druid\u8FDE\u63A5\u6C60\u914D\u7F6E###### +# \u6570\u636E\u6E90\u57FA\u7840\u914D\u7F6E +spring.datasource.url= #key\u4E5F\u53EF\u4EE5\u4E3Aspring.datasource.druid.url +spring.datasource.username= #key\u4E5F\u53EF\u4EE5\u4E3Aspring.datasource.druid.username +spring.datasource.password= #key\u4E5F\u53EF\u4EE5\u4E3Aspring.datasource.druid.password +spring.datasource.driver-class-name= #key\u4E5F\u53EF\u4EE5\u4E3Aspring.datasource.druid.driver-class-name\uFF0C\u975E\u5FC5\u586B\u9879\u53EF\u901A\u8FC7url\u89E3\u6790 +#\u4E0B\u9762\u914D\u7F6E\u8BF4\u660E\u8BF7\u53C2\u8003Druid Github Wiki\uFF0C\u914D\u7F6E_DruidDataSource\u53C2\u8003\u914D\u7F6E spring.datasource.druid.initialSize= spring.datasource.druid.minIdle= spring.datasource.druid.maxActive= @@ -17,26 +17,26 @@ spring.datasource.druid.testOnBorrow= spring.datasource.druid.testOnReturn= spring.datasource.druid.poolPreparedStatements= spring.datasource.druid.maxPoolPreparedStatementPerConnectionSize= -spring.datasource.druid.filters= #默认值stat,配置多个英文逗号分隔 +spring.datasource.druid.filters= #\u9ED8\u8BA4\u503Cstat\uFF0C\u914D\u7F6E\u591A\u4E2A\u82F1\u6587\u9017\u53F7\u5206\u9694 -######Druid监控配置###### -#下面配置说明请参考Druid Github Wiki,配置_配置WebStatFilter -spring.datasource.druid.StatFilter.enabled= #是否启用StatFilter默认值true -spring.datasource.druid.StatFilter.urlPattern= -spring.datasource.druid.StatFilter.exclusions= -spring.datasource.druid.StatFilter.sessionStatMaxCount= -spring.datasource.druid.StatFilter.sessionStatEnable= -spring.datasource.druid.StatFilter.principalSessionName= -spring.datasource.druid.StatFilter.principalCookieName= -spring.datasource.druid.StatFilter.profileEnable= -#下面配置说明请参考Druid Github Wiki,配置_StatViewServlet配置 -spring.datasource.druid.StatViewServlet.enabled= #是否启用StatViewServlet默认值true +######Druid\u76D1\u63A7\u914D\u7F6E###### +#\u4E0B\u9762\u914D\u7F6E\u8BF4\u660E\u8BF7\u53C2\u8003Druid Github Wiki\uFF0C\u914D\u7F6E_\u914D\u7F6EWebStatFilter +spring.datasource.druid.WebStatFilter.enabled= #\u662F\u5426\u542F\u7528StatFilter\u9ED8\u8BA4\u503Ctrue +spring.datasource.druid.WebStatFilter.urlPattern= +spring.datasource.druid.WebStatFilter.exclusions= +spring.datasource.druid.WebStatFilter.sessionStatMaxCount= +spring.datasource.druid.WebStatFilter.sessionStatEnable= +spring.datasource.druid.WebStatFilter.principalSessionName= +spring.datasource.druid.WebStatFilter.principalCookieName= +spring.datasource.druid.WebStatFilter.profileEnable= +#\u4E0B\u9762\u914D\u7F6E\u8BF4\u660E\u8BF7\u53C2\u8003Druid Github Wiki\uFF0C\u914D\u7F6E_StatViewServlet\u914D\u7F6E +spring.datasource.druid.StatViewServlet.enabled= #\u662F\u5426\u542F\u7528StatViewServlet\u9ED8\u8BA4\u503Ctrue spring.datasource.druid.StatViewServlet.urlPattern= spring.datasource.druid.StatViewServlet.resetEnable= spring.datasource.druid.StatViewServlet.loginUsername= spring.datasource.druid.StatViewServlet.loginPassword= spring.datasource.druid.StatViewServlet.allow= spring.datasource.druid.StatViewServlet.deny= -#下面配置说明请参考Druid Github Wiki,配置_配置WebStatFilter -spring.datasource.druid.aop-patterns= #Spring监控AOP切入点,如x.y.z.service.*,配置多个英文逗号分隔 -#如果spring.datasource.druid.aop-patterns要代理的类没有定义interface请设置spring.aop.proxy-target-class=true +#\u4E0B\u9762\u914D\u7F6E\u8BF4\u660E\u8BF7\u53C2\u8003Druid Github Wiki\uFF0C\u914D\u7F6E_\u914D\u7F6EWebStatFilter +spring.datasource.druid.aop-patterns= #Spring\u76D1\u63A7AOP\u5207\u5165\u70B9\uFF0C\u5982x.y.z.service.*,\u914D\u7F6E\u591A\u4E2A\u82F1\u6587\u9017\u53F7\u5206\u9694 +#\u5982\u679Cspring.datasource.druid.aop-patterns\u8981\u4EE3\u7406\u7684\u7C7B\u6CA1\u6709\u5B9A\u4E49interface\u8BF7\u8BBE\u7F6Espring.aop.proxy-target-class=true