1.优化代码&注释;

2.默认不对StatViewServlet和WebStatFilter进行自动配置与原项目保持一致,按需自行决定是否进行自动配置;
This commit is contained in:
lihengming
2017-05-03 15:00:31 +08:00
parent 69521ee57d
commit a68d96df4d
8 changed files with 46 additions and 66 deletions
@@ -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;
}
}
@@ -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);
@@ -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 <a href="https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_Druid%E5%92%8CSpring%E5%85%B3%E8%81%94%E7%9B%91%E6%8E%A7%E9%85%8D%E7%BD%AE">Druid和Spring关联监控配置</a>
*/
@@ -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")
@@ -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 <a href="https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatViewServlet%E9%85%8D%E7%BD%AE">StatViewServlet配置</a>
*/
@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) {
@@ -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 <a href="https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_%E9%85%8D%E7%BD%AEWebStatFilter">配置WebStatFilter</a>
*/
@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();
@@ -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
+23 -23
View File
@@ -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