From 4e8a7296f12a0f14e0eccf29e9b34fa92098ddc7 Mon Sep 17 00:00:00 2001 From: lihengming Date: Wed, 26 Apr 2017 13:23:06 +0800 Subject: [PATCH 01/21] add druid-spring-boot-starter support --- druid-spring-boot-starter/README.md | 63 ++++ druid-spring-boot-starter/pom.xml | 113 +++++++ ...ruidDataSourcePropertiesAutoConfigure.java | 76 +++++ .../boot/autoconfigure/DruidProperties.java | 285 ++++++++++++++++++ .../DruidSpringAopConfiguration.java | 39 +++ .../DruidStatFilterConfiguration.java | 41 +++ .../DruidStatViewServletConfiguration.java | 39 +++ .../main/resources/META-INF/spring.factories | 2 + .../boot/autoconfigure/test/Application.java | 21 ++ .../boot/autoconfigure/test/dao/UserDao.java | 7 + .../boot/autoconfigure/test/model/User.java | 45 +++ .../test/service/UserService.java | 7 + .../test/service/UserServiceImpl.java | 25 ++ .../test/web/UserController.java | 19 ++ .../src/test/resources/application.properties | 16 + .../src/test/resources/example.properties | 41 +++ 16 files changed, 839 insertions(+) create mode 100644 druid-spring-boot-starter/README.md create mode 100644 druid-spring-boot-starter/pom.xml create mode 100644 druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourcePropertiesAutoConfigure.java create mode 100644 druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidProperties.java create mode 100644 druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidSpringAopConfiguration.java create mode 100644 druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidStatFilterConfiguration.java create mode 100644 druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidStatViewServletConfiguration.java create mode 100644 druid-spring-boot-starter/src/main/resources/META-INF/spring.factories create mode 100644 druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/Application.java create mode 100644 druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/dao/UserDao.java create mode 100644 druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/model/User.java create mode 100644 druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/service/UserService.java create mode 100644 druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/service/UserServiceImpl.java create mode 100644 druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/web/UserController.java create mode 100644 druid-spring-boot-starter/src/test/resources/application.properties create mode 100644 druid-spring-boot-starter/src/test/resources/example.properties diff --git a/druid-spring-boot-starter/README.md b/druid-spring-boot-starter/README.md new file mode 100644 index 0000000000..18b6a826f9 --- /dev/null +++ b/druid-spring-boot-starter/README.md @@ -0,0 +1,63 @@ +# Druid Spring Boot Starter +### 简介 + +使用Spring Boot构建应用已成为Java开发者的首选,Spring 官方提供众多Starter供开发者使用,以便加快应用构建速度。 +Druid作为最好的数据库连接池并未获得Spring 官方的默认支持(目前Spring Boot中默认支持的连接池有dbcp,dbcp2, tomcat, hikari三种连接池)导致Druid连接池配置并不能生效,故开发Druid Spring Boot Starter供使用,使在Spring Boot中使用Druid数据库连接池和监控更为简单。 + +### 如何使用 +(1) ```git clone``` (2) ```mvn:install``` (3) 引入```Maven```依赖 (4) 按需配置```application.properties```,使用默认配置忽略此步 + +注:待上传中央仓库提供\ +### 配置项 +Druid Spring Boot Starter 配置项参数名称是完全遵照Druid的,默认值也是Druid的官方默认值,如果你进行了配置那么默认值将被覆盖。 +``` +# 数据源基础配置,参考Spring Boot文档该部分 +spring.datasource.url= +spring.datasource.username= +spring.datasource.password= +spring.datasource.driver-class-name= +# Druid配置 +spring.datasource.druid.StatViewServlet.enabled= #是否启用StatViewServlet默认值true +spring.datasource.druid.StatFilter.enabled= #是否启用StatFilter默认值true +spring.datasource.druid.filters= #默认值为stat,配置多个请以英文逗号分隔,如stat,wall,log4j +spring.datasource.druid.aop-patterns= #配置AOP切入点来启用Spring监控,配置多个以英文逗号分隔,如x.y.z.dao.*,x.y.z.service.* +#下面配置项说明请参考Druid Wiki,配置_DruidDataSource参考配置 +spring.datasource.druid.initialSize= +spring.datasource.druid.minIdle= +spring.datasource.druid.maxActive= +spring.datasource.druid.maxWait= +spring.datasource.druid.timeBetweenEvictionRunsMillis= +spring.datasource.druid.minEvictableIdleTimeMillis= +spring.datasource.druid.validationQuery= +spring.datasource.druid.testWhileIdle= +spring.datasource.druid.testOnBorrow= +spring.datasource.druid.testOnReturn= +spring.datasource.druid.poolPreparedStatements= +spring.datasource.druid.maxPoolPreparedStatementPerConnectionSize= +#下面配置项说明请参考Druid Wiki,配置_配置WebStatFilter +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 Wiki,配置_StatViewServlet配置 +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= + +#如果spring.datasource.druid.aop-patterns要代理的类没有定义interface请设置spring.aop.proxy-target-class=true + +``` +### 演示 +克隆项目,运行```test```包内的```Application.java``` +### 参考 +[Druid Wiki](https://github.com/alibaba/druid/wiki/%E9%A6%96%E9%A1%B5) + +[Spring Boot Reference](http://docs.spring.io/spring-boot/docs/1.5.1.RELEASE/reference/html/) + + diff --git a/druid-spring-boot-starter/pom.xml b/druid-spring-boot-starter/pom.xml new file mode 100644 index 0000000000..27ed72a671 --- /dev/null +++ b/druid-spring-boot-starter/pom.xml @@ -0,0 +1,113 @@ + + + 4.0.0 + + com.alibaba + druid-spring-boot-starter + 0.0.1 + jar + druid-spring-boot-starter + druid-spring-boot-starter + + + UTF-8 + UTF-8 + 1.7 + + + + + + + org.springframework.boot + spring-boot-dependencies + 1.5.1.RELEASE + pom + import + + + + + + + org.springframework.boot + spring-boot-autoconfigure + + + com.alibaba + druid + 1.0.14 + provided + + + javax.servlet + javax.servlet-api + 3.1.0 + provided + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.boot + spring-boot-starter-web + test + + + org.springframework.boot + spring-boot-starter-data-jpa + test + + + mysql + mysql-connector-java + test + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + true + + + + org.apache.maven.plugins + maven-source-plugin + + + attach-sources + + jar + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + + + attach-javadocs + + jar + + + + + + + + + + 李恒名 + https://github.com/lihengming/ + 89921218@qq.com + + + diff --git a/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourcePropertiesAutoConfigure.java b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourcePropertiesAutoConfigure.java new file mode 100644 index 0000000000..a576d4ffc7 --- /dev/null +++ b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourcePropertiesAutoConfigure.java @@ -0,0 +1,76 @@ +package com.alibaba.druid.spring.boot.autoconfigure; + +import com.alibaba.druid.pool.DruidDataSource; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder; +import org.springframework.boot.context.properties.ConfigurationProperties; +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 java.sql.SQLException; + +/** + * @author lihengming<89921218@qq.com> + */ +@Configuration +@ConditionalOnClass(com.alibaba.druid.pool.DruidDataSource.class) +@EnableConfigurationProperties(DruidProperties.class) +@Import({DruidSpringAopConfiguration.class, DruidStatViewServletConfiguration.class, DruidStatFilterConfiguration.class}) +public class DruidDataSourcePropertiesAutoConfigure { + @Bean + @ConfigurationProperties("spring.datasource") + public DataSource dataSource(DruidProperties properties) { + //base datasource config,use spring datasource autoconfig. + DruidDataSource datasource = (DruidDataSource) DataSourceBuilder + .create() + .type(DruidDataSource.class) + .build(); + //druid config. + configDruid(datasource, properties); + return datasource; + } + + private void configDruid(DruidDataSource datasource, DruidProperties properties) { + if (properties.getMaxActive() != null) { + datasource.setMaxActive(properties.getMaxActive()); + } + if (properties.getInitialSize() != null) { + datasource.setInitialSize(properties.getInitialSize()); + } + if (properties.getMaxWait() != null) { + datasource.setMaxWait(properties.getMaxWait()); + } + if (properties.getMinIdle() != null) { + datasource.setMinIdle(properties.getMinIdle()); + } + if (properties.getTimeBetweenEvictionRunsMillis() != null) { + datasource.setTimeBetweenEvictionRunsMillis(properties.getTimeBetweenEvictionRunsMillis()); + } + if (properties.getMinEvictableIdleTimeMillis() != null) { + datasource.setMinEvictableIdleTimeMillis(properties.getMinEvictableIdleTimeMillis()); + } + if (properties.getTestWhileIdle() != null) { + datasource.setTestWhileIdle(properties.getTestWhileIdle()); + } + if (properties.getTestOnBorrow() != null) { + datasource.setTestOnBorrow(properties.getTestOnBorrow()); + } + if (properties.getTestOnReturn() != null) { + datasource.setTestOnReturn(properties.getTestOnReturn()); + } + if (properties.getPoolPreparedStatements() != null) { + datasource.setPoolPreparedStatements(properties.getPoolPreparedStatements()); + } + if (properties.getMaxPoolPreparedStatementPerConnectionSize() != null) { + datasource.setMaxPoolPreparedStatementPerConnectionSize(properties.getMaxPoolPreparedStatementPerConnectionSize()); + } + try { + datasource.setFilters(properties.getFilters() != null ? properties.getFilters() : "stat"); + } catch (SQLException e) { + throw new IllegalArgumentException("please check your spring.datasource.druid.filters property.", e); + } + } +} diff --git a/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidProperties.java b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidProperties.java new file mode 100644 index 0000000000..2acdc359bb --- /dev/null +++ b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidProperties.java @@ -0,0 +1,285 @@ +package com.alibaba.druid.spring.boot.autoconfigure; + +import org.springframework.boot.context.properties.ConfigurationProperties; + +/** + * @author lihengming<89921218@qq.com> + * @see DruidDataSource参考配置 + */ +@ConfigurationProperties("spring.datasource.druid") +public class DruidProperties{ + private Integer initialSize; + private Integer minIdle; + private Integer maxActive; + private Integer maxWait; + private Integer timeBetweenEvictionRunsMillis; + private Integer minEvictableIdleTimeMillis; + private String validationQuery; + private Boolean testOnBorrow; + private Boolean testOnReturn; + private Boolean testWhileIdle; + private String filters; + private Boolean poolPreparedStatements; + private Integer maxPoolPreparedStatementPerConnectionSize; + private String[] aopPatterns; + private StatViewServlet statViewServlet = new StatViewServlet(); + private StatFilter statFilter = new StatFilter(); + + + public Integer getInitialSize() { + return initialSize; + } + + public void setInitialSize(Integer initialSize) { + this.initialSize = initialSize; + } + + public Integer getMinIdle() { + return minIdle; + } + + public void setMinIdle(Integer minIdle) { + this.minIdle = minIdle; + } + + public Integer getMaxActive() { + return maxActive; + } + + public void setMaxActive(Integer maxActive) { + this.maxActive = maxActive; + } + + public Integer getMaxWait() { + return maxWait; + } + + public void setMaxWait(Integer maxWait) { + this.maxWait = maxWait; + } + + public String getValidationQuery() { + return validationQuery; + } + + public void setValidationQuery(String validationQuery) { + this.validationQuery = validationQuery; + } + + public Boolean getTestOnBorrow() { + return testOnBorrow; + } + + public void setTestOnBorrow(Boolean testOnBorrow) { + this.testOnBorrow = testOnBorrow; + } + + public Boolean getTestOnReturn() { + return testOnReturn; + } + + public void setTestOnReturn(Boolean testOnReturn) { + this.testOnReturn = testOnReturn; + } + + public Boolean getTestWhileIdle() { + return testWhileIdle; + } + + public void setTestWhileIdle(Boolean testWhileIdle) { + this.testWhileIdle = testWhileIdle; + } + + public Integer getTimeBetweenEvictionRunsMillis() { + return timeBetweenEvictionRunsMillis; + } + + public void setTimeBetweenEvictionRunsMillis(Integer timeBetweenEvictionRunsMillis) { + this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis; + } + + public Integer getMinEvictableIdleTimeMillis() { + return minEvictableIdleTimeMillis; + } + + public void setMinEvictableIdleTimeMillis(Integer minEvictableIdleTimeMillis) { + this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis; + } + + public String getFilters() { + return filters; + } + + public void setFilters(String filters) { + this.filters = filters; + } + + public Boolean getPoolPreparedStatements() { + return poolPreparedStatements; + } + + public void setPoolPreparedStatements(Boolean poolPreparedStatements) { + this.poolPreparedStatements = poolPreparedStatements; + } + + public Integer getMaxPoolPreparedStatementPerConnectionSize() { + return maxPoolPreparedStatementPerConnectionSize; + } + + public void setMaxPoolPreparedStatementPerConnectionSize(Integer maxPoolPreparedStatementPerConnectionSize) { + this.maxPoolPreparedStatementPerConnectionSize = maxPoolPreparedStatementPerConnectionSize; + } + + public String[] getAopPatterns() { + return aopPatterns; + } + + public void setAopPatterns(String[] aopPatterns) { + this.aopPatterns = aopPatterns; + } + + public StatViewServlet getStatViewServlet() { + return statViewServlet; + } + + public void setStatViewServlet(StatViewServlet statViewServlet) { + this.statViewServlet = statViewServlet; + } + + public StatFilter getStatFilter() { + return statFilter; + } + + public void setStatFilter(StatFilter statFilter) { + this.statFilter = statFilter; + } + + /** + * @see StatViewServlet配置 + */ + public static class StatViewServlet{ + private String urlPattern; + private String allow; + private String deny; + private String loginUsername; + private String loginPassword; + private String resetEnable; + + public String getUrlPattern() { + return urlPattern; + } + + public void setUrlPattern(String urlPattern) { + this.urlPattern = urlPattern; + } + + public String getAllow() { + return allow; + } + + public void setAllow(String allow) { + this.allow = allow; + } + + public String getDeny() { + return deny; + } + + public void setDeny(String deny) { + this.deny = deny; + } + + public String getLoginUsername() { + return loginUsername; + } + + public void setLoginUsername(String loginUsername) { + this.loginUsername = loginUsername; + } + + public String getLoginPassword() { + return loginPassword; + } + + public void setLoginPassword(String loginPassword) { + this.loginPassword = loginPassword; + } + + public String getResetEnable() { + return resetEnable; + } + + public void setResetEnable(String resetEnable) { + this.resetEnable = resetEnable; + } + } + + /** + * @see 配置WebStatFilter + */ + public static class StatFilter{ + private String urlPattern; + private String exclusions; + private String sessionStatMaxCount; + private String sessionStatEnable; + private String principalSessionName; + private String principalCookieName; + private String profileEnable; + + public String getUrlPattern() { + return urlPattern; + } + + public void setUrlPattern(String urlPattern) { + this.urlPattern = urlPattern; + } + + public String getExclusions() { + return exclusions; + } + + public void setExclusions(String exclusions) { + this.exclusions = exclusions; + } + + public String getSessionStatMaxCount() { + return sessionStatMaxCount; + } + + public void setSessionStatMaxCount(String sessionStatMaxCount) { + this.sessionStatMaxCount = sessionStatMaxCount; + } + + public String getSessionStatEnable() { + return sessionStatEnable; + } + + public void setSessionStatEnable(String sessionStatEnable) { + this.sessionStatEnable = sessionStatEnable; + } + + public String getPrincipalSessionName() { + return principalSessionName; + } + + public void setPrincipalSessionName(String principalSessionName) { + this.principalSessionName = principalSessionName; + } + + public String getPrincipalCookieName() { + return principalCookieName; + } + + public void setPrincipalCookieName(String principalCookieName) { + this.principalCookieName = principalCookieName; + } + + public String getProfileEnable() { + return profileEnable; + } + + public void setProfileEnable(String profileEnable) { + this.profileEnable = profileEnable; + } + } +} diff --git a/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidSpringAopConfiguration.java b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidSpringAopConfiguration.java new file mode 100644 index 0000000000..2ac9a9abe2 --- /dev/null +++ b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidSpringAopConfiguration.java @@ -0,0 +1,39 @@ +package com.alibaba.druid.spring.boot.autoconfigure; + +import com.alibaba.druid.support.spring.stat.DruidStatInterceptor; +import org.aopalliance.aop.Advice; +import org.springframework.aop.Advisor; +import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator; +import org.springframework.aop.support.RegexpMethodPointcutAdvisor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.annotation.Bean; + +/** + * The Druid spring aop configuration. + * + * @author lihengming< qq.com> + * @see Druid和Spring关联监控配置 + */ +@ConditionalOnProperty("spring.datasource.druid.aop-patterns") +public class DruidSpringAopConfiguration { + @Value("${spring.aop.proxy-target-class:false}") + private boolean proxyTargetClass; + + @Bean + public Advice advice() { + return new DruidStatInterceptor(); + } + + @Bean + public Advisor advisor(DruidProperties properties) { + return new RegexpMethodPointcutAdvisor(properties.getAopPatterns(), advice()); + } + + @Bean + public DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator() { + DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator(); + advisorAutoProxyCreator.setProxyTargetClass(proxyTargetClass); + return advisorAutoProxyCreator; + } +} diff --git a/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidStatFilterConfiguration.java b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidStatFilterConfiguration.java new file mode 100644 index 0000000000..295c4a6f69 --- /dev/null +++ b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidStatFilterConfiguration.java @@ -0,0 +1,41 @@ +package com.alibaba.druid.spring.boot.autoconfigure; + +import com.alibaba.druid.support.http.WebStatFilter; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.context.annotation.Bean; + +/** + * The Druid stat filter configuration. + * + * @author lihengming< qq.com> + * @see 配置WebStatFilter + */ +@ConditionalOnProperty(name = "spring.datasource.druid.StatFilter.enabled", havingValue = "true", matchIfMissing = true) +public class DruidStatFilterConfiguration { + @Bean + public FilterRegistrationBean filterRegistrationBean(DruidProperties properties) { + DruidProperties.StatFilter config = properties.getStatFilter(); + FilterRegistrationBean registrationBean = new FilterRegistrationBean(); + WebStatFilter filter = new WebStatFilter(); + registrationBean.setFilter(filter); + registrationBean.addUrlPatterns(config.getUrlPattern() != null ? config.getUrlPattern() : "/*"); + registrationBean.addInitParameter("exclusions", config.getExclusions() != null ? config.getExclusions() : "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"); + if (config.getSessionStatEnable() != null) { + registrationBean.addInitParameter("sessionStatEnable", config.getSessionStatEnable()); + } + if (config.getSessionStatMaxCount() != null) { + registrationBean.addInitParameter("sessionStatMaxCount", config.getSessionStatMaxCount()); + } + if (config.getPrincipalSessionName() != null) { + registrationBean.addInitParameter("principalSessionName", config.getPrincipalSessionName()); + } + if (config.getPrincipalCookieName() != null) { + registrationBean.addInitParameter("principalCookieName", config.getPrincipalCookieName()); + } + if (config.getProfileEnable() != null) { + registrationBean.addInitParameter("profileEnable", config.getProfileEnable()); + } + return registrationBean; + } +} diff --git a/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidStatViewServletConfiguration.java b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidStatViewServletConfiguration.java new file mode 100644 index 0000000000..427b5b440a --- /dev/null +++ b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidStatViewServletConfiguration.java @@ -0,0 +1,39 @@ +package com.alibaba.druid.spring.boot.autoconfigure; + +import com.alibaba.druid.support.http.StatViewServlet; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.web.servlet.ServletRegistrationBean; +import org.springframework.context.annotation.Bean; + +/** + * The Druid stat view servlet configuration. + * + * @author lihengming< qq.com> + * @see StatViewServlet配置 + */ +@ConditionalOnProperty(name = "spring.datasource.druid.StatViewServlet.enabled", havingValue = "true", matchIfMissing = true) +public class DruidStatViewServletConfiguration { + @Bean + public ServletRegistrationBean servletRegistrationBean(DruidProperties properties) { + DruidProperties.StatViewServlet config = properties.getStatViewServlet(); + ServletRegistrationBean registration = new ServletRegistrationBean(); + registration.setServlet(new StatViewServlet()); + registration.addUrlMappings(config.getUrlPattern() != null ? config.getUrlPattern() : "/druid/*"); + if (config.getAllow() != null) { + registration.addInitParameter("allow", config.getAllow()); + } + if (config.getDeny() != null) { + registration.addInitParameter("deny", config.getDeny()); + } + if (config.getLoginUsername() != null) { + registration.addInitParameter("loginUsername", config.getLoginUsername()); + } + if (config.getLoginPassword() != null) { + registration.addInitParameter("loginPassword", config.getLoginPassword()); + } + if (config.getResetEnable() != null) { + registration.addInitParameter("resetEnable", config.getResetEnable()); + } + return registration; + } +} diff --git a/druid-spring-boot-starter/src/main/resources/META-INF/spring.factories b/druid-spring-boot-starter/src/main/resources/META-INF/spring.factories new file mode 100644 index 0000000000..9686c32427 --- /dev/null +++ b/druid-spring-boot-starter/src/main/resources/META-INF/spring.factories @@ -0,0 +1,2 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ +com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourcePropertiesAutoConfigure \ No newline at end of file diff --git a/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/Application.java b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/Application.java new file mode 100644 index 0000000000..b37fe32a60 --- /dev/null +++ b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/Application.java @@ -0,0 +1,21 @@ +package com.alibaba.druid.spring.boot.autoconfigure.test; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * @author lihengming<89921218@qq.com> + * + *

druid-spring-boot-starter 测试例子

+ *

1.按需配置application.properties

+ *

2.run Application

+ *

3.访问http://127.0.0.1:8080/druid

+ *

4.访问/user/{id}接口,查看监控效果,如:http://127.0.0.1:8080/user/1

+ * + */ +@SpringBootApplication +public class Application { + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } +} diff --git a/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/dao/UserDao.java b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/dao/UserDao.java new file mode 100644 index 0000000000..9a7d2aa02d --- /dev/null +++ b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/dao/UserDao.java @@ -0,0 +1,7 @@ +package com.alibaba.druid.spring.boot.autoconfigure.test.dao; + +import com.alibaba.druid.spring.boot.autoconfigure.test.model.User; +import org.springframework.data.repository.CrudRepository; + +public interface UserDao extends CrudRepository {} + diff --git a/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/model/User.java b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/model/User.java new file mode 100644 index 0000000000..90954b2843 --- /dev/null +++ b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/model/User.java @@ -0,0 +1,45 @@ +package com.alibaba.druid.spring.boot.autoconfigure.test.model; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +@Entity +public class User { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String name; + + public User() { + } + + public User(String name) { + this.name = name; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public String toString() { + return "User{" + + "id=" + id + + ", name='" + name + '\'' + + '}'; + } +} diff --git a/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/service/UserService.java b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/service/UserService.java new file mode 100644 index 0000000000..2bbfb2f671 --- /dev/null +++ b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/service/UserService.java @@ -0,0 +1,7 @@ +package com.alibaba.druid.spring.boot.autoconfigure.test.service; + +import com.alibaba.druid.spring.boot.autoconfigure.test.model.User; + +public interface UserService { + User findById(Long id); +} diff --git a/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/service/UserServiceImpl.java b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/service/UserServiceImpl.java new file mode 100644 index 0000000000..2e5828b87c --- /dev/null +++ b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/service/UserServiceImpl.java @@ -0,0 +1,25 @@ +package com.alibaba.druid.spring.boot.autoconfigure.test.service; + +import com.alibaba.druid.spring.boot.autoconfigure.test.dao.UserDao; +import com.alibaba.druid.spring.boot.autoconfigure.test.model.User; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class UserServiceImpl implements UserService,InitializingBean { + @Autowired + private UserDao userDao; + + @Override + public User findById(Long id) { + return userDao.findOne(id); + } + + @Override + public void afterPropertiesSet() throws Exception { + for (int i = 1; i <= 100; i++) { + userDao.save(new User("TEST-NAME-" + i)); + } + } +} diff --git a/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/web/UserController.java b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/web/UserController.java new file mode 100644 index 0000000000..7ec6105d11 --- /dev/null +++ b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/web/UserController.java @@ -0,0 +1,19 @@ +package com.alibaba.druid.spring.boot.autoconfigure.test.web; + +import com.alibaba.druid.spring.boot.autoconfigure.test.service.UserService; +import com.alibaba.druid.spring.boot.autoconfigure.test.model.User; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class UserController { + @Autowired + private UserService userService; + + @RequestMapping("/user/{id}") + public User list(@PathVariable Long id) { + return userService.findById(id); + } +} diff --git a/druid-spring-boot-starter/src/test/resources/application.properties b/druid-spring-boot-starter/src/test/resources/application.properties new file mode 100644 index 0000000000..542bfb8b7b --- /dev/null +++ b/druid-spring-boot-starter/src/test/resources/application.properties @@ -0,0 +1,16 @@ +# \u6570\u636E\u6E90\u57FA\u7840\u914D\u7F6E\uFF0C\u8BF7\u4FEE\u6539\u4E3A\u4F60\u7684JDBC\u914D\u7F6E +spring.datasource.url=jdbc:mysql://localhost:3306/your-db +spring.datasource.username=your-username +spring.datasource.password=your-password +spring.datasource.driver-class-name=com.mysql.jdbc.Driver +# Druid\u914D\u7F6E\uFF0C\u81EA\u884C\u589E\u5220\u914D\u7F6E +#spring.datasource.druid.maxActive=20 +spring.datasource.druid.filters=stat,wall,log4j +spring.datasource.druid.aop-patterns=com.alibaba.druid.spring.boot.autoconfigure.test.service.* +#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 +# \u5982\u679Cspring.datasource.druid.aop-patterns\u8981\u4EE3\u7406\u7684\u7C7B\u6CA1\u6709\u5B9A\u4E49interface\u8BF7\u8BBE\u7F6Espring.aop.proxy-target-class=true +# spring.aop.proxy-target-class=true diff --git a/druid-spring-boot-starter/src/test/resources/example.properties b/druid-spring-boot-starter/src/test/resources/example.properties new file mode 100644 index 0000000000..65f00be9f0 --- /dev/null +++ b/druid-spring-boot-starter/src/test/resources/example.properties @@ -0,0 +1,41 @@ +# \u6570\u636E\u6E90\u57FA\u7840\u914D\u7F6E\uFF0C\u53C2\u8003Spring Boot\u6587\u6863\u8BE5\u90E8\u5206 +spring.datasource.url= +spring.datasource.username= +spring.datasource.password= +spring.datasource.driver-class-name= +# Druid\u914D\u7F6E +spring.datasource.druid.StatViewServlet.enabled= #\u662F\u5426\u542F\u7528StatViewServlet\u9ED8\u8BA4\u503Ctrue +spring.datasource.druid.StatFilter.enabled= #\u662F\u5426\u542F\u7528StatFilter\u9ED8\u8BA4\u503Ctrue +spring.datasource.druid.filters= #\u9ED8\u8BA4\u503Cstat\uFF0C\u914D\u7F6E\u591A\u4E2A\u82F1\u6587\u9017\u53F7\u5206\u9694 +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 +#\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= +spring.datasource.druid.maxWait= +spring.datasource.druid.timeBetweenEvictionRunsMillis= +spring.datasource.druid.minEvictableIdleTimeMillis= +spring.datasource.druid.validationQuery= +spring.datasource.druid.testWhileIdle= +spring.datasource.druid.testOnBorrow= +spring.datasource.druid.testOnReturn= +spring.datasource.druid.poolPreparedStatements= +spring.datasource.druid.maxPoolPreparedStatementPerConnectionSize= +#\u4E0B\u9762\u914D\u7F6E\u8BF4\u660E\u8BF7\u53C2\u8003Druid Github Wiki\uFF0C\u914D\u7F6E_\u914D\u7F6EWebStatFilter +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= +#\u4E0B\u9762\u914D\u7F6E\u8BF4\u660E\u8BF7\u53C2\u8003Druid Github Wiki\uFF0C\u914D\u7F6E_StatViewServlet\u914D\u7F6E +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= + + +#\u5982\u679Cspring.datasource.druid.aop-patterns\u8981\u4EE3\u7406\u7684\u7C7B\u6CA1\u6709\u5B9A\u4E49interface\u8BF7\u8BBE\u7F6Espring.aop.proxy-target-class=true From dba81318643df03459d5758b88b7f48281e2ce82 Mon Sep 17 00:00:00 2001 From: lihengming Date: Wed, 26 Apr 2017 13:40:19 +0800 Subject: [PATCH 02/21] utf-8 --- .../src/test/resources/application.properties | 1 + druid-spring-boot-starter/src/test/resources/example.properties | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/druid-spring-boot-starter/src/test/resources/application.properties b/druid-spring-boot-starter/src/test/resources/application.properties index 542bfb8b7b..c2106958c9 100644 --- a/druid-spring-boot-starter/src/test/resources/application.properties +++ b/druid-spring-boot-starter/src/test/resources/application.properties @@ -14,3 +14,4 @@ spring.jpa.show-sql= true spring.jpa.hibernate.ddl-auto=create-drop # \u5982\u679Cspring.datasource.druid.aop-patterns\u8981\u4EE3\u7406\u7684\u7C7B\u6CA1\u6709\u5B9A\u4E49interface\u8BF7\u8BBE\u7F6Espring.aop.proxy-target-class=true # spring.aop.proxy-target-class=true + diff --git a/druid-spring-boot-starter/src/test/resources/example.properties b/druid-spring-boot-starter/src/test/resources/example.properties index 65f00be9f0..b9f4b8b700 100644 --- a/druid-spring-boot-starter/src/test/resources/example.properties +++ b/druid-spring-boot-starter/src/test/resources/example.properties @@ -37,5 +37,4 @@ spring.datasource.druid.StatViewServlet.loginPassword= spring.datasource.druid.StatViewServlet.allow= spring.datasource.druid.StatViewServlet.deny= - #\u5982\u679Cspring.datasource.druid.aop-patterns\u8981\u4EE3\u7406\u7684\u7C7B\u6CA1\u6709\u5B9A\u4E49interface\u8BF7\u8BBE\u7F6Espring.aop.proxy-target-class=true From a414a3e4620138c83c01ab14ee13bb891965ea62 Mon Sep 17 00:00:00 2001 From: lihengming Date: Wed, 26 Apr 2017 13:42:06 +0800 Subject: [PATCH 03/21] utf-8 --- .../src/test/resources/application.properties | 1 + druid-spring-boot-starter/src/test/resources/example.properties | 1 + 2 files changed, 2 insertions(+) diff --git a/druid-spring-boot-starter/src/test/resources/application.properties b/druid-spring-boot-starter/src/test/resources/application.properties index c2106958c9..b171a08b4b 100644 --- a/druid-spring-boot-starter/src/test/resources/application.properties +++ b/druid-spring-boot-starter/src/test/resources/application.properties @@ -15,3 +15,4 @@ spring.jpa.hibernate.ddl-auto=create-drop # \u5982\u679Cspring.datasource.druid.aop-patterns\u8981\u4EE3\u7406\u7684\u7C7B\u6CA1\u6709\u5B9A\u4E49interface\u8BF7\u8BBE\u7F6Espring.aop.proxy-target-class=true # spring.aop.proxy-target-class=true + diff --git a/druid-spring-boot-starter/src/test/resources/example.properties b/druid-spring-boot-starter/src/test/resources/example.properties index b9f4b8b700..65f00be9f0 100644 --- a/druid-spring-boot-starter/src/test/resources/example.properties +++ b/druid-spring-boot-starter/src/test/resources/example.properties @@ -37,4 +37,5 @@ spring.datasource.druid.StatViewServlet.loginPassword= spring.datasource.druid.StatViewServlet.allow= spring.datasource.druid.StatViewServlet.deny= + #\u5982\u679Cspring.datasource.druid.aop-patterns\u8981\u4EE3\u7406\u7684\u7C7B\u6CA1\u6709\u5B9A\u4E49interface\u8BF7\u8BBE\u7F6Espring.aop.proxy-target-class=true From 68b4e5149cf2e8eff578a14eaa7543118defbe7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=9C=9F=E8=B1=86?= <89921218@qq.com> Date: Wed, 26 Apr 2017 13:47:57 +0800 Subject: [PATCH 04/21] utf-8 --- .../src/test/resources/example.properties | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/druid-spring-boot-starter/src/test/resources/example.properties b/druid-spring-boot-starter/src/test/resources/example.properties index 65f00be9f0..72f2d7e2f1 100644 --- a/druid-spring-boot-starter/src/test/resources/example.properties +++ b/druid-spring-boot-starter/src/test/resources/example.properties @@ -1,14 +1,14 @@ -# \u6570\u636E\u6E90\u57FA\u7840\u914D\u7F6E\uFF0C\u53C2\u8003Spring Boot\u6587\u6863\u8BE5\u90E8\u5206 +# 数据源基础配置,参考Spring Boot文档该部分 spring.datasource.url= spring.datasource.username= spring.datasource.password= spring.datasource.driver-class-name= -# Druid\u914D\u7F6E -spring.datasource.druid.StatViewServlet.enabled= #\u662F\u5426\u542F\u7528StatViewServlet\u9ED8\u8BA4\u503Ctrue -spring.datasource.druid.StatFilter.enabled= #\u662F\u5426\u542F\u7528StatFilter\u9ED8\u8BA4\u503Ctrue -spring.datasource.druid.filters= #\u9ED8\u8BA4\u503Cstat\uFF0C\u914D\u7F6E\u591A\u4E2A\u82F1\u6587\u9017\u53F7\u5206\u9694 -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 -#\u4E0B\u9762\u914D\u7F6E\u8BF4\u660E\u8BF7\u53C2\u8003Druid Github Wiki\uFF0C\u914D\u7F6E_DruidDataSource\u53C2\u8003\u914D\u7F6E +# Druid配置 +spring.datasource.druid.StatViewServlet.enabled= #是否启用StatViewServlet默认值true +spring.datasource.druid.StatFilter.enabled= #是否启用StatFilter默认值true +spring.datasource.druid.filters= #默认值stat,配置多个英文逗号分隔 +spring.datasource.druid.aop-patterns= #Spring监控AOP切入点,如x.y.z.service.*,配置多个英文逗号分隔 +#下面配置说明请参考Druid Github Wiki,配置_DruidDataSource参考配置 spring.datasource.druid.initialSize= spring.datasource.druid.minIdle= spring.datasource.druid.maxActive= @@ -21,7 +21,7 @@ spring.datasource.druid.testOnBorrow= spring.datasource.druid.testOnReturn= spring.datasource.druid.poolPreparedStatements= spring.datasource.druid.maxPoolPreparedStatementPerConnectionSize= -#\u4E0B\u9762\u914D\u7F6E\u8BF4\u660E\u8BF7\u53C2\u8003Druid Github Wiki\uFF0C\u914D\u7F6E_\u914D\u7F6EWebStatFilter +#下面配置说明请参考Druid Github Wiki,配置_配置WebStatFilter spring.datasource.druid.StatFilter.urlPattern= spring.datasource.druid.StatFilter.exclusions= spring.datasource.druid.StatFilter.sessionStatMaxCount= @@ -29,7 +29,7 @@ spring.datasource.druid.StatFilter.sessionStatEnable= spring.datasource.druid.StatFilter.principalSessionName= spring.datasource.druid.StatFilter.principalCookieName= spring.datasource.druid.StatFilter.profileEnable= -#\u4E0B\u9762\u914D\u7F6E\u8BF4\u660E\u8BF7\u53C2\u8003Druid Github Wiki\uFF0C\u914D\u7F6E_StatViewServlet\u914D\u7F6E +#下面配置说明请参考Druid Github Wiki,配置_StatViewServlet配置 spring.datasource.druid.StatViewServlet.urlPattern= spring.datasource.druid.StatViewServlet.resetEnable= spring.datasource.druid.StatViewServlet.loginUsername= @@ -38,4 +38,4 @@ spring.datasource.druid.StatViewServlet.allow= spring.datasource.druid.StatViewServlet.deny= -#\u5982\u679Cspring.datasource.druid.aop-patterns\u8981\u4EE3\u7406\u7684\u7C7B\u6CA1\u6709\u5B9A\u4E49interface\u8BF7\u8BBE\u7F6Espring.aop.proxy-target-class=true +#如果spring.datasource.druid.aop-patterns要代理的类没有定义interface请设置spring.aop.proxy-target-class=true From 261e8956cf681a0affeb8ae826fe3d20889def86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=9C=9F=E8=B1=86?= <89921218@qq.com> Date: Wed, 26 Apr 2017 13:48:45 +0800 Subject: [PATCH 05/21] utf-8 --- .../src/test/resources/application.properties | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/druid-spring-boot-starter/src/test/resources/application.properties b/druid-spring-boot-starter/src/test/resources/application.properties index b171a08b4b..2f45138874 100644 --- a/druid-spring-boot-starter/src/test/resources/application.properties +++ b/druid-spring-boot-starter/src/test/resources/application.properties @@ -1,9 +1,9 @@ -# \u6570\u636E\u6E90\u57FA\u7840\u914D\u7F6E\uFF0C\u8BF7\u4FEE\u6539\u4E3A\u4F60\u7684JDBC\u914D\u7F6E +# 数据源基础配置,请修改为你的JDBC配置 spring.datasource.url=jdbc:mysql://localhost:3306/your-db spring.datasource.username=your-username spring.datasource.password=your-password spring.datasource.driver-class-name=com.mysql.jdbc.Driver -# Druid\u914D\u7F6E\uFF0C\u81EA\u884C\u589E\u5220\u914D\u7F6E +# Druid配置,自行增删配置 #spring.datasource.druid.maxActive=20 spring.datasource.druid.filters=stat,wall,log4j spring.datasource.druid.aop-patterns=com.alibaba.druid.spring.boot.autoconfigure.test.service.* @@ -12,7 +12,7 @@ spring.datasource.druid.aop-patterns=com.alibaba.druid.spring.boot.autoconfigure # JPA spring.jpa.show-sql= true spring.jpa.hibernate.ddl-auto=create-drop -# \u5982\u679Cspring.datasource.druid.aop-patterns\u8981\u4EE3\u7406\u7684\u7C7B\u6CA1\u6709\u5B9A\u4E49interface\u8BF7\u8BBE\u7F6Espring.aop.proxy-target-class=true +# 如果spring.datasource.druid.aop-patterns要代理的类没有定义interface请设置spring.aop.proxy-target-class=true # spring.aop.proxy-target-class=true From 893b7e4fe7c34bd96a7dd5841222efbe12e89b85 Mon Sep 17 00:00:00 2001 From: lihengming Date: Thu, 27 Apr 2017 16:12:53 +0800 Subject: [PATCH 06/21] =?UTF-8?q?1.=20=E9=87=8D=E6=9E=84=20druid-spring-bo?= =?UTF-8?q?ot-starter=20=E5=B9=B6=E5=85=A5=E4=B8=BB=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E3=80=82=202.=20=E6=8F=90=E4=BE=9BDruidDataSourceBuilder?= =?UTF-8?q?=E6=94=AF=E6=8C=81Spring=20Boot=E4=B8=8BDruid=E5=A4=9A=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=BA=90=E9=85=8D=E7=BD=AE=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/resources/META-INF/spring.factories | 2 - .../boot/autoconfigure/test/dao/UserDao.java | 7 - .../test/service/UserService.java | 7 - .../DruidDataSourceAutoConfigure.java | 60 ++++++++ .../autoconfigure/DruidDataSourceBuilder.java | 64 ++++++++ .../DruidSpringAopConfiguration.java | 21 ++- .../DruidStatFilterConfiguration.java | 25 ++- .../autoconfigure/DruidStatProperties.java | 143 +++--------------- .../DruidStatViewServletConfiguration.java | 23 ++- src/main/resources/META-INF/spring.factories | 2 + .../boot/autoconfigure}/Application.java | 4 +- .../boot/autoconfigure/dao/UserDao.java | 8 + .../boot/autoconfigure}/model/User.java | 2 +- .../autoconfigure/service/UserService.java | 8 + .../service/UserServiceImpl.java | 6 +- .../autoconfigure}/web/UserController.java | 6 +- 16 files changed, 229 insertions(+), 159 deletions(-) delete mode 100644 druid-spring-boot-starter/src/main/resources/META-INF/spring.factories delete mode 100644 druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/dao/UserDao.java delete mode 100644 druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/service/UserService.java create mode 100644 src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.java create mode 100644 src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidDataSourceBuilder.java rename {druid-spring-boot-starter/src/main/java/com/alibaba/druid => src/main/java/com/alibaba/druid/support}/spring/boot/autoconfigure/DruidSpringAopConfiguration.java (64%) rename {druid-spring-boot-starter/src/main/java/com/alibaba/druid => src/main/java/com/alibaba/druid/support}/spring/boot/autoconfigure/DruidStatFilterConfiguration.java (63%) rename druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidProperties.java => src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidStatProperties.java (55%) rename {druid-spring-boot-starter/src/main/java/com/alibaba/druid => src/main/java/com/alibaba/druid/support}/spring/boot/autoconfigure/DruidStatViewServletConfiguration.java (66%) create mode 100644 src/main/resources/META-INF/spring.factories rename {druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test => src/test/java/com/alibaba/druid/spring/boot/autoconfigure}/Application.java (81%) create mode 100644 src/test/java/com/alibaba/druid/spring/boot/autoconfigure/dao/UserDao.java rename {druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test => src/test/java/com/alibaba/druid/spring/boot/autoconfigure}/model/User.java (92%) create mode 100644 src/test/java/com/alibaba/druid/spring/boot/autoconfigure/service/UserService.java rename {druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test => src/test/java/com/alibaba/druid/spring/boot/autoconfigure}/service/UserServiceImpl.java (73%) rename {druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test => src/test/java/com/alibaba/druid/spring/boot/autoconfigure}/web/UserController.java (69%) diff --git a/druid-spring-boot-starter/src/main/resources/META-INF/spring.factories b/druid-spring-boot-starter/src/main/resources/META-INF/spring.factories deleted file mode 100644 index 9686c32427..0000000000 --- a/druid-spring-boot-starter/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,2 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ -com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourcePropertiesAutoConfigure \ No newline at end of file diff --git a/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/dao/UserDao.java b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/dao/UserDao.java deleted file mode 100644 index 9a7d2aa02d..0000000000 --- a/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/dao/UserDao.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.alibaba.druid.spring.boot.autoconfigure.test.dao; - -import com.alibaba.druid.spring.boot.autoconfigure.test.model.User; -import org.springframework.data.repository.CrudRepository; - -public interface UserDao extends CrudRepository {} - diff --git a/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/service/UserService.java b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/service/UserService.java deleted file mode 100644 index 2bbfb2f671..0000000000 --- a/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/service/UserService.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.alibaba.druid.spring.boot.autoconfigure.test.service; - -import com.alibaba.druid.spring.boot.autoconfigure.test.model.User; - -public interface UserService { - User findById(Long id); -} 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 new file mode 100644 index 0000000000..e1927fbe1b --- /dev/null +++ b/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.java @@ -0,0 +1,60 @@ +/* + * Copyright 1999-2017 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.support.spring.boot.autoconfigure; + +import com.alibaba.druid.pool.DruidDataSource; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.context.properties.ConfigurationProperties; +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 org.springframework.core.env.Environment; + +import javax.sql.DataSource; + +/** + * 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}) +public class DruidDataSourceAutoConfigure { + + @Bean + @ConfigurationProperties("spring.datasource.druid") + 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 (dataSource.getUsername() == null) { + dataSource.setUsername(env.getProperty("spring.datasource.username")); + } + if (dataSource.getPassword() == null) { + dataSource.setPassword(env.getProperty("spring.datasource.password")); + } + if (dataSource.getUrl() == null) { + dataSource.setUrl(env.getProperty("spring.datasource.url")); + } + if (dataSource.getDriverClassName() == null) { + dataSource.setDriverClassName(env.getProperty("spring.datasource.driver-class-name")); + } + 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 new file mode 100644 index 0000000000..7b94c6d459 --- /dev/null +++ b/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidDataSourceBuilder.java @@ -0,0 +1,64 @@ +/* + * Copyright 1999-2017 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.support.spring.boot.autoconfigure; + + +import com.alibaba.druid.pool.DruidDataSource; +import org.springframework.beans.MutablePropertyValues; +import org.springframework.boot.bind.RelaxedDataBinder; +import org.springframework.boot.jdbc.DatabaseDriver; + +import java.util.HashMap; +import java.util.Map; + +/** + * The Druid data source builder. + * + * @author lihengming<89921218@qq.com> + */ +public class DruidDataSourceBuilder { + + private Map properties = new HashMap(); + + public static DruidDataSourceBuilder create() { + return new DruidDataSourceBuilder(); + } + + public DruidDataSource build() { + DruidDataSource dataSource = new DruidDataSource(); + maybeGetDriverClassName(); + bind(dataSource); + return dataSource; + } + + //use RelaxedDataBinder by reflection config druid . + private void bind(DruidDataSource result) { + MutablePropertyValues properties = new MutablePropertyValues(this.properties); + new RelaxedDataBinder(result) + .withAlias("url", "jdbcUrl") + .withAlias("username", "user") + .bind(properties); + } + + private void maybeGetDriverClassName() { + if (!this.properties.containsKey("driverClassName") + && this.properties.containsKey("url")) { + String url = this.properties.get("url"); + String driverClass = DatabaseDriver.fromJdbcUrl(url).getDriverClassName(); + this.properties.put("driverClassName", driverClass); + } + } +} diff --git a/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidSpringAopConfiguration.java b/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidSpringAopConfiguration.java similarity index 64% rename from druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidSpringAopConfiguration.java rename to src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidSpringAopConfiguration.java index 2ac9a9abe2..98ac4e7545 100644 --- a/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidSpringAopConfiguration.java +++ b/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidSpringAopConfiguration.java @@ -1,4 +1,19 @@ -package com.alibaba.druid.spring.boot.autoconfigure; +/* + * Copyright 1999-2017 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.support.spring.boot.autoconfigure; import com.alibaba.druid.support.spring.stat.DruidStatInterceptor; import org.aopalliance.aop.Advice; @@ -12,7 +27,7 @@ import org.springframework.context.annotation.Bean; /** * The Druid spring aop configuration. * - * @author lihengming< qq.com> + * @author lihengming<89921218@qq.com> * @see Druid和Spring关联监控配置 */ @ConditionalOnProperty("spring.datasource.druid.aop-patterns") @@ -26,7 +41,7 @@ public class DruidSpringAopConfiguration { } @Bean - public Advisor advisor(DruidProperties properties) { + public Advisor advisor(DruidStatProperties properties) { return new RegexpMethodPointcutAdvisor(properties.getAopPatterns(), advice()); } diff --git a/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidStatFilterConfiguration.java b/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidStatFilterConfiguration.java similarity index 63% rename from druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidStatFilterConfiguration.java rename to src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidStatFilterConfiguration.java index 295c4a6f69..16fa73a108 100644 --- a/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidStatFilterConfiguration.java +++ b/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidStatFilterConfiguration.java @@ -1,4 +1,19 @@ -package com.alibaba.druid.spring.boot.autoconfigure; +/* + * Copyright 1999-2017 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.support.spring.boot.autoconfigure; import com.alibaba.druid.support.http.WebStatFilter; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -8,14 +23,14 @@ import org.springframework.context.annotation.Bean; /** * The Druid stat filter configuration. * - * @author lihengming< qq.com> + * @author lihengming<89921218@qq.com> * @see 配置WebStatFilter */ -@ConditionalOnProperty(name = "spring.datasource.druid.StatFilter.enabled", havingValue = "true", matchIfMissing = true) +@ConditionalOnProperty(name = "spring.datasource.druid.stat.StatFilter.enabled", havingValue = "true", matchIfMissing = true) public class DruidStatFilterConfiguration { @Bean - public FilterRegistrationBean filterRegistrationBean(DruidProperties properties) { - DruidProperties.StatFilter config = properties.getStatFilter(); + public FilterRegistrationBean filterRegistrationBean(DruidStatProperties properties) { + DruidStatProperties.StatFilter config = properties.getStatFilter(); FilterRegistrationBean registrationBean = new FilterRegistrationBean(); WebStatFilter filter = new WebStatFilter(); registrationBean.setFilter(filter); diff --git a/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidProperties.java b/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidStatProperties.java similarity index 55% rename from druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidProperties.java rename to src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidStatProperties.java index 2acdc359bb..3e050c4af3 100644 --- a/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidProperties.java +++ b/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidStatProperties.java @@ -1,135 +1,34 @@ -package com.alibaba.druid.spring.boot.autoconfigure; +/* + * Copyright 1999-2017 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +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> - * @see DruidDataSource参考配置 */ @ConfigurationProperties("spring.datasource.druid") -public class DruidProperties{ - private Integer initialSize; - private Integer minIdle; - private Integer maxActive; - private Integer maxWait; - private Integer timeBetweenEvictionRunsMillis; - private Integer minEvictableIdleTimeMillis; - private String validationQuery; - private Boolean testOnBorrow; - private Boolean testOnReturn; - private Boolean testWhileIdle; - private String filters; - private Boolean poolPreparedStatements; - private Integer maxPoolPreparedStatementPerConnectionSize; +public class DruidStatProperties { private String[] aopPatterns; private StatViewServlet statViewServlet = new StatViewServlet(); private StatFilter statFilter = new StatFilter(); - public Integer getInitialSize() { - return initialSize; - } - - public void setInitialSize(Integer initialSize) { - this.initialSize = initialSize; - } - - public Integer getMinIdle() { - return minIdle; - } - - public void setMinIdle(Integer minIdle) { - this.minIdle = minIdle; - } - - public Integer getMaxActive() { - return maxActive; - } - - public void setMaxActive(Integer maxActive) { - this.maxActive = maxActive; - } - - public Integer getMaxWait() { - return maxWait; - } - - public void setMaxWait(Integer maxWait) { - this.maxWait = maxWait; - } - - public String getValidationQuery() { - return validationQuery; - } - - public void setValidationQuery(String validationQuery) { - this.validationQuery = validationQuery; - } - - public Boolean getTestOnBorrow() { - return testOnBorrow; - } - - public void setTestOnBorrow(Boolean testOnBorrow) { - this.testOnBorrow = testOnBorrow; - } - - public Boolean getTestOnReturn() { - return testOnReturn; - } - - public void setTestOnReturn(Boolean testOnReturn) { - this.testOnReturn = testOnReturn; - } - - public Boolean getTestWhileIdle() { - return testWhileIdle; - } - - public void setTestWhileIdle(Boolean testWhileIdle) { - this.testWhileIdle = testWhileIdle; - } - - public Integer getTimeBetweenEvictionRunsMillis() { - return timeBetweenEvictionRunsMillis; - } - - public void setTimeBetweenEvictionRunsMillis(Integer timeBetweenEvictionRunsMillis) { - this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis; - } - - public Integer getMinEvictableIdleTimeMillis() { - return minEvictableIdleTimeMillis; - } - - public void setMinEvictableIdleTimeMillis(Integer minEvictableIdleTimeMillis) { - this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis; - } - - public String getFilters() { - return filters; - } - - public void setFilters(String filters) { - this.filters = filters; - } - - public Boolean getPoolPreparedStatements() { - return poolPreparedStatements; - } - - public void setPoolPreparedStatements(Boolean poolPreparedStatements) { - this.poolPreparedStatements = poolPreparedStatements; - } - - public Integer getMaxPoolPreparedStatementPerConnectionSize() { - return maxPoolPreparedStatementPerConnectionSize; - } - - public void setMaxPoolPreparedStatementPerConnectionSize(Integer maxPoolPreparedStatementPerConnectionSize) { - this.maxPoolPreparedStatementPerConnectionSize = maxPoolPreparedStatementPerConnectionSize; - } - public String[] getAopPatterns() { return aopPatterns; } @@ -157,7 +56,7 @@ public class DruidProperties{ /** * @see StatViewServlet配置 */ - public static class StatViewServlet{ + public static class StatViewServlet { private String urlPattern; private String allow; private String deny; @@ -217,7 +116,7 @@ public class DruidProperties{ /** * @see 配置WebStatFilter */ - public static class StatFilter{ + public static class StatFilter { private String urlPattern; private String exclusions; private String sessionStatMaxCount; diff --git a/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidStatViewServletConfiguration.java b/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidStatViewServletConfiguration.java similarity index 66% rename from druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidStatViewServletConfiguration.java rename to src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidStatViewServletConfiguration.java index 427b5b440a..bfb60b8d03 100644 --- a/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidStatViewServletConfiguration.java +++ b/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidStatViewServletConfiguration.java @@ -1,4 +1,19 @@ -package com.alibaba.druid.spring.boot.autoconfigure; +/* + * Copyright 1999-2017 Alibaba Group Holding Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.alibaba.druid.support.spring.boot.autoconfigure; import com.alibaba.druid.support.http.StatViewServlet; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -8,14 +23,14 @@ import org.springframework.context.annotation.Bean; /** * The Druid stat view servlet configuration. * - * @author lihengming< qq.com> + * @author lihengming<89921218@qq.com> * @see StatViewServlet配置 */ @ConditionalOnProperty(name = "spring.datasource.druid.StatViewServlet.enabled", havingValue = "true", matchIfMissing = true) public class DruidStatViewServletConfiguration { @Bean - public ServletRegistrationBean servletRegistrationBean(DruidProperties properties) { - DruidProperties.StatViewServlet config = properties.getStatViewServlet(); + public ServletRegistrationBean servletRegistrationBean(DruidStatProperties properties) { + DruidStatProperties.StatViewServlet config = properties.getStatViewServlet(); ServletRegistrationBean registration = new ServletRegistrationBean(); registration.setServlet(new StatViewServlet()); registration.addUrlMappings(config.getUrlPattern() != null ? config.getUrlPattern() : "/druid/*"); diff --git a/src/main/resources/META-INF/spring.factories b/src/main/resources/META-INF/spring.factories new file mode 100644 index 0000000000..11bd1b66cc --- /dev/null +++ b/src/main/resources/META-INF/spring.factories @@ -0,0 +1,2 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ +com.alibaba.druid.support.spring.boot.autoconfigure.DruidDataSourceAutoConfigure \ No newline at end of file diff --git a/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/Application.java b/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/Application.java similarity index 81% rename from druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/Application.java rename to src/test/java/com/alibaba/druid/spring/boot/autoconfigure/Application.java index b37fe32a60..e066baf254 100644 --- a/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/Application.java +++ b/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/Application.java @@ -1,4 +1,4 @@ -package com.alibaba.druid.spring.boot.autoconfigure.test; +package com.alibaba.druid.spring.boot.autoconfigure; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -7,7 +7,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; * @author lihengming<89921218@qq.com> * *

druid-spring-boot-starter 测试例子

- *

1.按需配置application.properties

+ *

1.按需配置application.properties,配置项请参考

*

2.run Application

*

3.访问http://127.0.0.1:8080/druid

*

4.访问/user/{id}接口,查看监控效果,如:http://127.0.0.1:8080/user/1

diff --git a/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/dao/UserDao.java b/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/dao/UserDao.java new file mode 100644 index 0000000000..965e27f376 --- /dev/null +++ b/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/dao/UserDao.java @@ -0,0 +1,8 @@ +package com.alibaba.druid.spring.boot.autoconfigure.dao; + + +import com.alibaba.druid.spring.boot.autoconfigure.model.User; +import org.springframework.data.repository.CrudRepository; + +public interface UserDao extends CrudRepository {} + diff --git a/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/model/User.java b/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/model/User.java similarity index 92% rename from druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/model/User.java rename to src/test/java/com/alibaba/druid/spring/boot/autoconfigure/model/User.java index 90954b2843..4d3fc16c92 100644 --- a/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/model/User.java +++ b/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/model/User.java @@ -1,4 +1,4 @@ -package com.alibaba.druid.spring.boot.autoconfigure.test.model; +package com.alibaba.druid.spring.boot.autoconfigure.model; import javax.persistence.Entity; import javax.persistence.GeneratedValue; diff --git a/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/service/UserService.java b/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/service/UserService.java new file mode 100644 index 0000000000..da12cd6f6b --- /dev/null +++ b/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/service/UserService.java @@ -0,0 +1,8 @@ +package com.alibaba.druid.spring.boot.autoconfigure.service; + + +import com.alibaba.druid.spring.boot.autoconfigure.model.User; + +public interface UserService { + User findById(Long id); +} diff --git a/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/service/UserServiceImpl.java b/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/service/UserServiceImpl.java similarity index 73% rename from druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/service/UserServiceImpl.java rename to src/test/java/com/alibaba/druid/spring/boot/autoconfigure/service/UserServiceImpl.java index 2e5828b87c..a8bf4b9108 100644 --- a/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/service/UserServiceImpl.java +++ b/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/service/UserServiceImpl.java @@ -1,7 +1,7 @@ -package com.alibaba.druid.spring.boot.autoconfigure.test.service; +package com.alibaba.druid.spring.boot.autoconfigure.service; -import com.alibaba.druid.spring.boot.autoconfigure.test.dao.UserDao; -import com.alibaba.druid.spring.boot.autoconfigure.test.model.User; +import com.alibaba.druid.spring.boot.autoconfigure.dao.UserDao; +import com.alibaba.druid.spring.boot.autoconfigure.model.User; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/web/UserController.java b/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/web/UserController.java similarity index 69% rename from druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/web/UserController.java rename to src/test/java/com/alibaba/druid/spring/boot/autoconfigure/web/UserController.java index 7ec6105d11..ce54065c45 100644 --- a/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/test/web/UserController.java +++ b/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/web/UserController.java @@ -1,7 +1,7 @@ -package com.alibaba.druid.spring.boot.autoconfigure.test.web; +package com.alibaba.druid.spring.boot.autoconfigure.web; -import com.alibaba.druid.spring.boot.autoconfigure.test.service.UserService; -import com.alibaba.druid.spring.boot.autoconfigure.test.model.User; +import com.alibaba.druid.spring.boot.autoconfigure.model.User; +import com.alibaba.druid.spring.boot.autoconfigure.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; From 6d5a1278a373b0e7fca3d23266a3addefdfadbbe Mon Sep 17 00:00:00 2001 From: lihengming Date: Thu, 27 Apr 2017 16:16:12 +0800 Subject: [PATCH 07/21] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E7=A4=BA=E4=BE=8B?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E5=8F=8A=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/config/application.properties | 16 +++++++ src/test/resources/config/template.properties | 42 +++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 src/test/resources/config/application.properties create mode 100644 src/test/resources/config/template.properties diff --git a/src/test/resources/config/application.properties b/src/test/resources/config/application.properties new file mode 100644 index 0000000000..e365364643 --- /dev/null +++ b/src/test/resources/config/application.properties @@ -0,0 +1,16 @@ +# \u6570\u636E\u6E90\u57FA\u7840\u914D\u7F6E\uFF0C\u8BF7\u4FEE\u6539\u4E3A\u4F60\u7684JDBC\u914D\u7F6E +spring.datasource.druid.url=jdbc:mysql://112.125.16.240:3306/kuaijishi_1 +spring.datasource.druid.username=kuaijishi +spring.datasource.druid.password=kuaijishi_01 +spring.datasource.druid.driver-class-name=com.mysql.jdbc.Driver +# Druid\u914D\u7F6E\uFF0C\u81EA\u884C\u589E\u5220\u914D\u7F6E +spring.datasource.druid.maxActive=20 +spring.datasource.druid.filters=stat,wall,log4j +spring.datasource.druid.aop-patterns=com.alibaba.druid.spring.boot.autoconfigure.service.* +#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 +# \u5982\u679Cspring.datasource.druid.aop-patterns\u8981\u4EE3\u7406\u7684\u7C7B\u6CA1\u6709\u5B9A\u4E49interface\u8BF7\u8BBE\u7F6Espring.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 new file mode 100644 index 0000000000..01bbfe4ed1 --- /dev/null +++ b/src/test/resources/config/template.properties @@ -0,0 +1,42 @@ +######Druid\u8FDE\u63A5\u6C60\u914D\u7F6E###### +# \u6570\u636E\u6E90\u57FA\u7840\u914D\u7F6E +spring.datasource.url= #key\u4E5F\u53EF\u4EE5\u4E3A\u4E5F\u53EF\u4EE5spring.datasource.druid.url +spring.datasource.username= #key\u4E5F\u53EF\u4EE5\u4E3A\u4E5F\u53EF\u4EE5spring.datasource.druid.username +spring.datasource.password= #key\u4E5F\u53EF\u4EE5\u4E3A\u4E5F\u53EF\u4EE5spring.datasource.druid.password +spring.datasource.driver-class-name= #key\u4E5F\u53EF\u4EE5\u4E3A\u4E5F\u53EF\u4EE5spring.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= +spring.datasource.druid.maxWait= +spring.datasource.druid.timeBetweenEvictionRunsMillis= +spring.datasource.druid.minEvictableIdleTimeMillis= +spring.datasource.druid.validationQuery= +spring.datasource.druid.testWhileIdle= +spring.datasource.druid.testOnBorrow= +spring.datasource.druid.testOnReturn= +spring.datasource.druid.poolPreparedStatements= +spring.datasource.druid.maxPoolPreparedStatementPerConnectionSize= +spring.datasource.druid.filters= #\u9ED8\u8BA4\u503Cstat\uFF0C\u914D\u7F6E\u591A\u4E2A\u82F1\u6587\u9017\u53F7\u5206\u9694 + +######Druid\u76D1\u63A7\u914D\u7F6E###### +#\u4E0B\u9762\u914D\u7F6E\u8BF4\u660E\u8BF7\u53C2\u8003Druid Github Wiki\uFF0C\u914D\u7F6E_\u914D\u7F6EWebStatFilter +spring.datasource.druid.StatFilter.enabled= #\u662F\u5426\u542F\u7528StatFilter\u9ED8\u8BA4\u503Ctrue +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= +#\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= +#\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 From c15d5b5370f4b44b4602b4045b66cc8ca87d3cfd Mon Sep 17 00:00:00 2001 From: lihengming Date: Thu, 27 Apr 2017 16:19:44 +0800 Subject: [PATCH 08/21] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E7=A4=BA=E4=BE=8B=E4=BE=9D=E8=B5=96=EF=BC=8C=E7=94=B1=E4=BA=8E?= =?UTF-8?q?Spring=20Boot=E7=89=88=E6=9C=AC=E4=B8=BA1.5.2(=E9=9C=80spring1.?= =?UTF-8?q?3.4)=E8=80=8Cspring.version=E7=89=88=E6=9C=AC=E4=B8=BA3.2.5?= =?UTF-8?q?=EF=BC=8C=E5=AF=BC=E8=87=B4=E6=B5=8B=E8=AF=95=E7=A4=BA=E4=BE=8B?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E5=90=AF=E5=8A=A8=EF=BC=8C=E6=89=80=E4=BB=A5?= =?UTF-8?q?=E5=BC=95=E5=85=A5=E4=BA=86Spring=20Dependency=20Manager=20?= =?UTF-8?q?=E5=8D=87=E7=BA=A7spring.version=E4=B8=BA3.3.4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/pom.xml b/pom.xml index e0ff8be62d..9b3aab7682 100644 --- a/pom.xml +++ b/pom.xml @@ -19,7 +19,6 @@ 2013 - 4.2.5.RELEASE 4.12 false @@ -353,6 +352,19 @@ + + + + + org.springframework.boot + spring-boot-dependencies + 1.5.2.RELEASE + pom + import + + + + simple-jndi @@ -386,35 +398,30 @@ org.springframework spring-core - ${spring.version} provided true org.springframework spring-beans - ${spring.version} provided true org.springframework spring-orm - ${spring.version} provided true org.springframework spring-webmvc - ${spring.version} provided true org.springframework.boot spring-boot-starter - 1.5.2.RELEASE provided true @@ -553,7 +560,6 @@ org.springframework spring-test - ${spring.version} test @@ -673,5 +679,15 @@ 19.0 test + + org.springframework.boot + spring-boot-starter-web + test + + + org.springframework.boot + spring-boot-starter-data-jpa + test + From 3dc56de5744fcf44e011e14b478c7002327a6524 Mon Sep 17 00:00:00 2001 From: lihengming Date: Thu, 27 Apr 2017 16:21:27 +0800 Subject: [PATCH 09/21] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E7=A4=BA=E4=BE=8B?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/resources/config/application.properties | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/resources/config/application.properties b/src/test/resources/config/application.properties index e365364643..bd0f40fc76 100644 --- a/src/test/resources/config/application.properties +++ b/src/test/resources/config/application.properties @@ -1,7 +1,7 @@ # \u6570\u636E\u6E90\u57FA\u7840\u914D\u7F6E\uFF0C\u8BF7\u4FEE\u6539\u4E3A\u4F60\u7684JDBC\u914D\u7F6E -spring.datasource.druid.url=jdbc:mysql://112.125.16.240:3306/kuaijishi_1 -spring.datasource.druid.username=kuaijishi -spring.datasource.druid.password=kuaijishi_01 +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\u914D\u7F6E\uFF0C\u81EA\u884C\u589E\u5220\u914D\u7F6E spring.datasource.druid.maxActive=20 From a17033158fb23a571c3398ec5f4a943e245c2689 Mon Sep 17 00:00:00 2001 From: lihengming Date: Thu, 27 Apr 2017 16:23:03 +0800 Subject: [PATCH 10/21] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=8E=9F=20druid-sprin?= =?UTF-8?q?g-boot-starter=20=E9=A1=B9=E7=9B=AE=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- druid-spring-boot-starter/README.md | 63 ---------- druid-spring-boot-starter/pom.xml | 113 ------------------ ...ruidDataSourcePropertiesAutoConfigure.java | 76 ------------ .../src/test/resources/application.properties | 18 --- .../src/test/resources/example.properties | 41 ------- 5 files changed, 311 deletions(-) delete mode 100644 druid-spring-boot-starter/README.md delete mode 100644 druid-spring-boot-starter/pom.xml delete mode 100644 druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourcePropertiesAutoConfigure.java delete mode 100644 druid-spring-boot-starter/src/test/resources/application.properties delete mode 100644 druid-spring-boot-starter/src/test/resources/example.properties diff --git a/druid-spring-boot-starter/README.md b/druid-spring-boot-starter/README.md deleted file mode 100644 index 18b6a826f9..0000000000 --- a/druid-spring-boot-starter/README.md +++ /dev/null @@ -1,63 +0,0 @@ -# Druid Spring Boot Starter -### 简介 - -使用Spring Boot构建应用已成为Java开发者的首选,Spring 官方提供众多Starter供开发者使用,以便加快应用构建速度。 -Druid作为最好的数据库连接池并未获得Spring 官方的默认支持(目前Spring Boot中默认支持的连接池有dbcp,dbcp2, tomcat, hikari三种连接池)导致Druid连接池配置并不能生效,故开发Druid Spring Boot Starter供使用,使在Spring Boot中使用Druid数据库连接池和监控更为简单。 - -### 如何使用 -(1) ```git clone``` (2) ```mvn:install``` (3) 引入```Maven```依赖 (4) 按需配置```application.properties```,使用默认配置忽略此步 - -注:待上传中央仓库提供\ -### 配置项 -Druid Spring Boot Starter 配置项参数名称是完全遵照Druid的,默认值也是Druid的官方默认值,如果你进行了配置那么默认值将被覆盖。 -``` -# 数据源基础配置,参考Spring Boot文档该部分 -spring.datasource.url= -spring.datasource.username= -spring.datasource.password= -spring.datasource.driver-class-name= -# Druid配置 -spring.datasource.druid.StatViewServlet.enabled= #是否启用StatViewServlet默认值true -spring.datasource.druid.StatFilter.enabled= #是否启用StatFilter默认值true -spring.datasource.druid.filters= #默认值为stat,配置多个请以英文逗号分隔,如stat,wall,log4j -spring.datasource.druid.aop-patterns= #配置AOP切入点来启用Spring监控,配置多个以英文逗号分隔,如x.y.z.dao.*,x.y.z.service.* -#下面配置项说明请参考Druid Wiki,配置_DruidDataSource参考配置 -spring.datasource.druid.initialSize= -spring.datasource.druid.minIdle= -spring.datasource.druid.maxActive= -spring.datasource.druid.maxWait= -spring.datasource.druid.timeBetweenEvictionRunsMillis= -spring.datasource.druid.minEvictableIdleTimeMillis= -spring.datasource.druid.validationQuery= -spring.datasource.druid.testWhileIdle= -spring.datasource.druid.testOnBorrow= -spring.datasource.druid.testOnReturn= -spring.datasource.druid.poolPreparedStatements= -spring.datasource.druid.maxPoolPreparedStatementPerConnectionSize= -#下面配置项说明请参考Druid Wiki,配置_配置WebStatFilter -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 Wiki,配置_StatViewServlet配置 -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= - -#如果spring.datasource.druid.aop-patterns要代理的类没有定义interface请设置spring.aop.proxy-target-class=true - -``` -### 演示 -克隆项目,运行```test```包内的```Application.java``` -### 参考 -[Druid Wiki](https://github.com/alibaba/druid/wiki/%E9%A6%96%E9%A1%B5) - -[Spring Boot Reference](http://docs.spring.io/spring-boot/docs/1.5.1.RELEASE/reference/html/) - - diff --git a/druid-spring-boot-starter/pom.xml b/druid-spring-boot-starter/pom.xml deleted file mode 100644 index 27ed72a671..0000000000 --- a/druid-spring-boot-starter/pom.xml +++ /dev/null @@ -1,113 +0,0 @@ - - - 4.0.0 - - com.alibaba - druid-spring-boot-starter - 0.0.1 - jar - druid-spring-boot-starter - druid-spring-boot-starter - - - UTF-8 - UTF-8 - 1.7 - - - - - - - org.springframework.boot - spring-boot-dependencies - 1.5.1.RELEASE - pom - import - - - - - - - org.springframework.boot - spring-boot-autoconfigure - - - com.alibaba - druid - 1.0.14 - provided - - - javax.servlet - javax.servlet-api - 3.1.0 - provided - - - org.springframework.boot - spring-boot-starter-test - test - - - org.springframework.boot - spring-boot-starter-web - test - - - org.springframework.boot - spring-boot-starter-data-jpa - test - - - mysql - mysql-connector-java - test - - - - - - org.apache.maven.plugins - maven-surefire-plugin - - true - - - - org.apache.maven.plugins - maven-source-plugin - - - attach-sources - - jar - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - - - attach-javadocs - - jar - - - - - - - - - - 李恒名 - https://github.com/lihengming/ - 89921218@qq.com - - - diff --git a/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourcePropertiesAutoConfigure.java b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourcePropertiesAutoConfigure.java deleted file mode 100644 index a576d4ffc7..0000000000 --- a/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourcePropertiesAutoConfigure.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.alibaba.druid.spring.boot.autoconfigure; - -import com.alibaba.druid.pool.DruidDataSource; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder; -import org.springframework.boot.context.properties.ConfigurationProperties; -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 java.sql.SQLException; - -/** - * @author lihengming<89921218@qq.com> - */ -@Configuration -@ConditionalOnClass(com.alibaba.druid.pool.DruidDataSource.class) -@EnableConfigurationProperties(DruidProperties.class) -@Import({DruidSpringAopConfiguration.class, DruidStatViewServletConfiguration.class, DruidStatFilterConfiguration.class}) -public class DruidDataSourcePropertiesAutoConfigure { - @Bean - @ConfigurationProperties("spring.datasource") - public DataSource dataSource(DruidProperties properties) { - //base datasource config,use spring datasource autoconfig. - DruidDataSource datasource = (DruidDataSource) DataSourceBuilder - .create() - .type(DruidDataSource.class) - .build(); - //druid config. - configDruid(datasource, properties); - return datasource; - } - - private void configDruid(DruidDataSource datasource, DruidProperties properties) { - if (properties.getMaxActive() != null) { - datasource.setMaxActive(properties.getMaxActive()); - } - if (properties.getInitialSize() != null) { - datasource.setInitialSize(properties.getInitialSize()); - } - if (properties.getMaxWait() != null) { - datasource.setMaxWait(properties.getMaxWait()); - } - if (properties.getMinIdle() != null) { - datasource.setMinIdle(properties.getMinIdle()); - } - if (properties.getTimeBetweenEvictionRunsMillis() != null) { - datasource.setTimeBetweenEvictionRunsMillis(properties.getTimeBetweenEvictionRunsMillis()); - } - if (properties.getMinEvictableIdleTimeMillis() != null) { - datasource.setMinEvictableIdleTimeMillis(properties.getMinEvictableIdleTimeMillis()); - } - if (properties.getTestWhileIdle() != null) { - datasource.setTestWhileIdle(properties.getTestWhileIdle()); - } - if (properties.getTestOnBorrow() != null) { - datasource.setTestOnBorrow(properties.getTestOnBorrow()); - } - if (properties.getTestOnReturn() != null) { - datasource.setTestOnReturn(properties.getTestOnReturn()); - } - if (properties.getPoolPreparedStatements() != null) { - datasource.setPoolPreparedStatements(properties.getPoolPreparedStatements()); - } - if (properties.getMaxPoolPreparedStatementPerConnectionSize() != null) { - datasource.setMaxPoolPreparedStatementPerConnectionSize(properties.getMaxPoolPreparedStatementPerConnectionSize()); - } - try { - datasource.setFilters(properties.getFilters() != null ? properties.getFilters() : "stat"); - } catch (SQLException e) { - throw new IllegalArgumentException("please check your spring.datasource.druid.filters property.", e); - } - } -} diff --git a/druid-spring-boot-starter/src/test/resources/application.properties b/druid-spring-boot-starter/src/test/resources/application.properties deleted file mode 100644 index 2f45138874..0000000000 --- a/druid-spring-boot-starter/src/test/resources/application.properties +++ /dev/null @@ -1,18 +0,0 @@ -# 数据源基础配置,请修改为你的JDBC配置 -spring.datasource.url=jdbc:mysql://localhost:3306/your-db -spring.datasource.username=your-username -spring.datasource.password=your-password -spring.datasource.driver-class-name=com.mysql.jdbc.Driver -# Druid配置,自行增删配置 -#spring.datasource.druid.maxActive=20 -spring.datasource.druid.filters=stat,wall,log4j -spring.datasource.druid.aop-patterns=com.alibaba.druid.spring.boot.autoconfigure.test.service.* -#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/druid-spring-boot-starter/src/test/resources/example.properties b/druid-spring-boot-starter/src/test/resources/example.properties deleted file mode 100644 index 72f2d7e2f1..0000000000 --- a/druid-spring-boot-starter/src/test/resources/example.properties +++ /dev/null @@ -1,41 +0,0 @@ -# 数据源基础配置,参考Spring Boot文档该部分 -spring.datasource.url= -spring.datasource.username= -spring.datasource.password= -spring.datasource.driver-class-name= -# Druid配置 -spring.datasource.druid.StatViewServlet.enabled= #是否启用StatViewServlet默认值true -spring.datasource.druid.StatFilter.enabled= #是否启用StatFilter默认值true -spring.datasource.druid.filters= #默认值stat,配置多个英文逗号分隔 -spring.datasource.druid.aop-patterns= #Spring监控AOP切入点,如x.y.z.service.*,配置多个英文逗号分隔 -#下面配置说明请参考Druid Github Wiki,配置_DruidDataSource参考配置 -spring.datasource.druid.initialSize= -spring.datasource.druid.minIdle= -spring.datasource.druid.maxActive= -spring.datasource.druid.maxWait= -spring.datasource.druid.timeBetweenEvictionRunsMillis= -spring.datasource.druid.minEvictableIdleTimeMillis= -spring.datasource.druid.validationQuery= -spring.datasource.druid.testWhileIdle= -spring.datasource.druid.testOnBorrow= -spring.datasource.druid.testOnReturn= -spring.datasource.druid.poolPreparedStatements= -spring.datasource.druid.maxPoolPreparedStatementPerConnectionSize= -#下面配置说明请参考Druid Github Wiki,配置_配置WebStatFilter -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.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= - - -#如果spring.datasource.druid.aop-patterns要代理的类没有定义interface请设置spring.aop.proxy-target-class=true From 5b5bb734449e2f5ab41aef462c6777d2b13b8e46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=9C=9F=E8=B1=86?= <89921218@qq.com> Date: Thu, 27 Apr 2017 16:39:08 +0800 Subject: [PATCH 11/21] =?UTF-8?q?=E9=86=89=E4=BA=86=EF=BC=8C=E6=98=8E?= =?UTF-8?q?=E6=98=8E=E6=98=AFutf-8=E7=9A=84...=E4=BF=AE=E5=A4=8D=E4=B9=B1?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/resources/config/template.properties | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/test/resources/config/template.properties b/src/test/resources/config/template.properties index 01bbfe4ed1..19e26b176a 100644 --- a/src/test/resources/config/template.properties +++ b/src/test/resources/config/template.properties @@ -1,10 +1,10 @@ -######Druid\u8FDE\u63A5\u6C60\u914D\u7F6E###### -# \u6570\u636E\u6E90\u57FA\u7840\u914D\u7F6E -spring.datasource.url= #key\u4E5F\u53EF\u4EE5\u4E3A\u4E5F\u53EF\u4EE5spring.datasource.druid.url -spring.datasource.username= #key\u4E5F\u53EF\u4EE5\u4E3A\u4E5F\u53EF\u4EE5spring.datasource.druid.username -spring.datasource.password= #key\u4E5F\u53EF\u4EE5\u4E3A\u4E5F\u53EF\u4EE5spring.datasource.druid.password -spring.datasource.driver-class-name= #key\u4E5F\u53EF\u4EE5\u4E3A\u4E5F\u53EF\u4EE5spring.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 +######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参考配置 spring.datasource.druid.initialSize= spring.datasource.druid.minIdle= spring.datasource.druid.maxActive= @@ -17,11 +17,11 @@ spring.datasource.druid.testOnBorrow= spring.datasource.druid.testOnReturn= spring.datasource.druid.poolPreparedStatements= spring.datasource.druid.maxPoolPreparedStatementPerConnectionSize= -spring.datasource.druid.filters= #\u9ED8\u8BA4\u503Cstat\uFF0C\u914D\u7F6E\u591A\u4E2A\u82F1\u6587\u9017\u53F7\u5206\u9694 +spring.datasource.druid.filters= #默认值stat,配置多个英文逗号分隔 -######Druid\u76D1\u63A7\u914D\u7F6E###### -#\u4E0B\u9762\u914D\u7F6E\u8BF4\u660E\u8BF7\u53C2\u8003Druid Github Wiki\uFF0C\u914D\u7F6E_\u914D\u7F6EWebStatFilter -spring.datasource.druid.StatFilter.enabled= #\u662F\u5426\u542F\u7528StatFilter\u9ED8\u8BA4\u503Ctrue +######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= @@ -29,14 +29,14 @@ spring.datasource.druid.StatFilter.sessionStatEnable= spring.datasource.druid.StatFilter.principalSessionName= spring.datasource.druid.StatFilter.principalCookieName= spring.datasource.druid.StatFilter.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 +#下面配置说明请参考Druid Github Wiki,配置_StatViewServlet配置 +spring.datasource.druid.StatViewServlet.enabled= #是否启用StatViewServlet默认值true 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= -#\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 +#下面配置说明请参考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 From d1797e02bda5f6e915bdbcc84139bf9a40602ae2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=9C=9F=E8=B1=86?= <89921218@qq.com> Date: Thu, 27 Apr 2017 16:39:34 +0800 Subject: [PATCH 12/21] utf-8 --- src/test/resources/config/application.properties | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/resources/config/application.properties b/src/test/resources/config/application.properties index bd0f40fc76..3235bfbed0 100644 --- a/src/test/resources/config/application.properties +++ b/src/test/resources/config/application.properties @@ -1,9 +1,9 @@ -# \u6570\u636E\u6E90\u57FA\u7840\u914D\u7F6E\uFF0C\u8BF7\u4FEE\u6539\u4E3A\u4F60\u7684JDBC\u914D\u7F6E +# 数据源基础配置,请修改为你的JDBC配置 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\u914D\u7F6E\uFF0C\u81EA\u884C\u589E\u5220\u914D\u7F6E +# Druid配置,自行增删配置 spring.datasource.druid.maxActive=20 spring.datasource.druid.filters=stat,wall,log4j spring.datasource.druid.aop-patterns=com.alibaba.druid.spring.boot.autoconfigure.service.* @@ -12,5 +12,5 @@ spring.datasource.druid.aop-patterns=com.alibaba.druid.spring.boot.autoconfigure # JPA spring.jpa.show-sql= true spring.jpa.hibernate.ddl-auto=create-drop -# \u5982\u679Cspring.datasource.druid.aop-patterns\u8981\u4EE3\u7406\u7684\u7C7B\u6CA1\u6709\u5B9A\u4E49interface\u8BF7\u8BBE\u7F6Espring.aop.proxy-target-class=true +# 如果spring.datasource.druid.aop-patterns要代理的类没有定义interface请设置spring.aop.proxy-target-class=true # spring.aop.proxy-target-class=true From 7e7dd5da384b4af083c2dff7498d1e0e15674741 Mon Sep 17 00:00:00 2001 From: lihengming Date: Thu, 27 Apr 2017 16:56:39 +0800 Subject: [PATCH 13/21] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alibaba/druid/spring/boot/autoconfigure/Application.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/Application.java b/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/Application.java index e066baf254..29e25aa9bf 100644 --- a/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/Application.java +++ b/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/Application.java @@ -6,7 +6,7 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; /** * @author lihengming<89921218@qq.com> * - *

druid-spring-boot-starter 测试例子

+ *

druid-spring-boot-autoconfigure 测试例子

*

1.按需配置application.properties,配置项请参考

*

2.run Application

*

3.访问http://127.0.0.1:8080/druid

From aa91df1fc7b9de1e6fad8116b6d886e6a4433e0a Mon Sep 17 00:00:00 2001 From: lihengming Date: Thu, 27 Apr 2017 17:39:19 +0800 Subject: [PATCH 14/21] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B3=A8=E8=A7=A3@Cond?= =?UTF-8?q?itionalOnMissingBean=EF=BC=8C=E5=BD=93Context=E4=B8=AD=E5=B7=B2?= =?UTF-8?q?=E5=AD=98=E5=9C=A8=E7=94=A8=E6=88=B7=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E7=9A=84=E6=95=B0=E6=8D=AE=E6=BA=90=E7=9A=84=E6=97=B6=E4=B8=8D?= =?UTF-8?q?=E5=86=8D=E8=BF=9B=E8=A1=8C=E8=87=AA=E5=8A=A8=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../spring/boot/autoconfigure/DruidDataSourceAutoConfigure.java | 2 ++ .../spring/boot/autoconfigure/DruidStatFilterConfiguration.java | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) 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 e1927fbe1b..65c1842bdf 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 @@ -17,6 +17,7 @@ package com.alibaba.druid.support.spring.boot.autoconfigure; import com.alibaba.druid.pool.DruidDataSource; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; @@ -39,6 +40,7 @@ public class DruidDataSourceAutoConfigure { @Bean @ConfigurationProperties("spring.datasource.druid") + @ConditionalOnMissingBean public DataSource dataSource(Environment env) { DruidDataSource dataSource = DruidDataSourceBuilder.create().build(); 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/DruidStatFilterConfiguration.java index 16fa73a108..06669f36aa 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/DruidStatFilterConfiguration.java @@ -26,7 +26,7 @@ import org.springframework.context.annotation.Bean; * @author lihengming<89921218@qq.com> * @see 配置WebStatFilter */ -@ConditionalOnProperty(name = "spring.datasource.druid.stat.StatFilter.enabled", havingValue = "true", matchIfMissing = true) +@ConditionalOnProperty(name = "spring.datasource.druid.StatFilter.enabled", havingValue = "true", matchIfMissing = true) public class DruidStatFilterConfiguration { @Bean public FilterRegistrationBean filterRegistrationBean(DruidStatProperties properties) { From 69521ee57df3a32d0e2bf837b1c8ac7062e153b8 Mon Sep 17 00:00:00 2001 From: lihengming Date: Thu, 27 Apr 2017 17:44:21 +0800 Subject: [PATCH 15/21] =?UTF-8?q?=E4=BC=98=E5=8C=96DruidDataSourceBuilder?= =?UTF-8?q?=EF=BC=8C=E5=BD=93=E8=87=AA=E8=A1=8C=E4=BD=BF=E7=94=A8Builder?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E6=95=B0=E6=8D=AE=E6=BA=90=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E5=A6=82=E6=9E=9C=E6=95=B0=E6=8D=AE=E6=BA=90=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E7=9A=84=E5=89=8D=E7=BC=80=E4=B8=8D=E6=98=AF?= =?UTF-8?q?sping.datasource.druid=E5=8F=AF=E8=87=AA=E8=A1=8Cset=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../autoconfigure/DruidDataSourceBuilder.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) 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 7b94c6d459..63eacebec3 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 @@ -44,6 +44,26 @@ 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); From a68d96df4db8e95e7e5ecbc88899435dd99226a1 Mon Sep 17 00:00:00 2001 From: lihengming <89921218@qq.com> Date: Wed, 3 May 2017 15:00:31 +0800 Subject: [PATCH 16/21] =?UTF-8?q?1.=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81&?= =?UTF-8?q?=E6=B3=A8=E9=87=8A=EF=BC=9B=202.=E9=BB=98=E8=AE=A4=E4=B8=8D?= =?UTF-8?q?=E5=AF=B9StatViewServlet=E5=92=8CWebStatFilter=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E8=87=AA=E5=8A=A8=E9=85=8D=E7=BD=AE=E4=B8=8E=E5=8E=9F?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E4=BF=9D=E6=8C=81=E4=B8=80=E8=87=B4=EF=BC=8C?= =?UTF-8?q?=E6=8C=89=E9=9C=80=E8=87=AA=E8=A1=8C=E5=86=B3=E5=AE=9A=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E8=BF=9B=E8=A1=8C=E8=87=AA=E5=8A=A8=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DruidDataSourceAutoConfigure.java | 15 ++++-- .../autoconfigure/DruidDataSourceBuilder.java | 22 --------- .../DruidSpringAopConfiguration.java | 2 - .../autoconfigure/DruidStatProperties.java | 2 - .../DruidStatViewServletConfiguration.java | 4 +- ...a => DruidWebStatFilterConfiguration.java} | 6 +-- .../resources/config/application.properties | 15 +++--- src/test/resources/config/template.properties | 46 +++++++++---------- 8 files changed, 46 insertions(+), 66 deletions(-) rename src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/{DruidStatFilterConfiguration.java => DruidWebStatFilterConfiguration.java} (92%) 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 From 3a1c0824dc8024c57e5cf60ddc173336655a2f7e Mon Sep 17 00:00:00 2001 From: lihengming <89921218@qq.com> Date: Wed, 3 May 2017 15:04:11 +0800 Subject: [PATCH 17/21] =?UTF-8?q?=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/config/application.properties | 8 ++-- src/test/resources/config/template.properties | 46 +++++++++---------- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/src/test/resources/config/application.properties b/src/test/resources/config/application.properties index d254f0f181..f506bbea1c 100644 --- a/src/test/resources/config/application.properties +++ b/src/test/resources/config/application.properties @@ -1,13 +1,13 @@ -# \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 -#\u542F\u7528Druid\u7684\u5185\u7F6E\u76D1\u63A7\u9875\u9762 +#启用Druid的内置监控页面 spring.datasource.druid.StatViewServlet.enabled=true -#\u542F\u7528Web\u5173\u8054\u76D1\u63A7\u914D\u7F6E +#启用Web关联监控配置 spring.datasource.druid.WebStatFilter.enabled=true -#\u542F\u7528Spring\u5173\u8054\u76D1\u63A7\u914D\u7F6E +#启用Spring关联监控配置 spring.datasource.druid.aop-patterns=com.alibaba.druid.spring.boot.autoconfigure.service.* #spring.datasource.druid.maxActive=20 #spring.datasource.druid.filters=stat,wall,log4j diff --git a/src/test/resources/config/template.properties b/src/test/resources/config/template.properties index 224408ee82..05065ac516 100644 --- a/src/test/resources/config/template.properties +++ b/src/test/resources/config/template.properties @@ -1,10 +1,10 @@ -######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 +######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参考配置 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= #\u9ED8\u8BA4\u503Cstat\uFF0C\u914D\u7F6E\u591A\u4E2A\u82F1\u6587\u9017\u53F7\u5206\u9694 +spring.datasource.druid.filters= #默认值stat,配置多个英文逗号分隔 -######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 +######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 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= -#\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 +#下面配置说明请参考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 From 5a65a6205de1df2800a99599caafb17f91a7bba8 Mon Sep 17 00:00:00 2001 From: lihengming <89921218@qq.com> Date: Wed, 3 May 2017 15:08:45 +0800 Subject: [PATCH 18/21] update template.properties --- src/test/resources/config/template.properties | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/test/resources/config/template.properties b/src/test/resources/config/template.properties index 05065ac516..e6c0afd9ad 100644 --- a/src/test/resources/config/template.properties +++ b/src/test/resources/config/template.properties @@ -21,14 +21,14 @@ spring.datasource.druid.filters= #默认值stat,配置多个英文逗号分隔 ######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= +spring.datasource.druid.WebStatFilter.enabled= #是否启用StatFilter默认值true +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= #下面配置说明请参考Druid Github Wiki,配置_StatViewServlet配置 spring.datasource.druid.StatViewServlet.enabled= #是否启用StatViewServlet默认值true spring.datasource.druid.StatViewServlet.urlPattern= From 6f25027b4e9ef086c59db102c98f911971bc5861 Mon Sep 17 00:00:00 2001 From: lihengming <89921218@qq.com> Date: Tue, 16 May 2017 14:15:13 +0800 Subject: [PATCH 19/21] reconstitution druid-spring-boot-starter --- druid-spring-boot-starter/pom.xml | 183 ++++++++++++------ .../DruidDataSourceAutoConfigure.java | 8 +- .../autoconfigure/DruidDataSourceBuilder.java | 4 +- .../DruidSpringAopConfiguration.java | 3 +- .../autoconfigure/DruidStatProperties.java | 8 +- .../DruidStatViewServletConfiguration.java | 5 +- .../DruidWebStatFilterConfiguration.java | 5 +- .../jdbc/DruidAutoConfiguration.java | 43 ---- ...itional-spring-configuration-metadata.json | 10 - .../main/resources/META-INF/spring.factories | 3 +- .../main/resources/META-INF/spring.provides | 1 - .../demo/DruidAutoConfigurationTest.java | 36 ---- .../boot/druid/demo/DruidDemoApplication.java | 16 -- .../spring/boot/demo/DemoApplication.java | 21 ++ .../druid/spring/boot/demo}/dao/UserDao.java | 4 +- .../druid/spring/boot/demo}/model/User.java | 2 +- .../spring/boot/demo/service/UserService.java | 8 + .../boot/demo}/service/UserServiceImpl.java | 7 +- .../spring/boot/demo}/web/UserController.java | 7 +- .../src/test/resources/application.properties | 18 +- .../test/resources/config-template.properties | 14 +- .../spring-configuration-metadata.json | 35 ++++ .../target/classes/META-INF/spring.factories | 2 + .../DruidDataSourceAutoConfigure.class | Bin 0 -> 2788 bytes .../DruidDataSourceBuilder.class | Bin 0 -> 2294 bytes .../DruidSpringAopConfiguration.class | Bin 0 -> 1913 bytes .../DruidStatProperties$StatFilter.class | Bin 0 -> 2087 bytes .../DruidStatProperties$StatViewServlet.class | Bin 0 -> 1776 bytes .../autoconfigure/DruidStatProperties.class | Bin 0 -> 1984 bytes .../DruidStatViewServletConfiguration.class | Bin 0 -> 2437 bytes .../DruidWebStatFilterConfiguration.class | Bin 0 -> 2739 bytes .../test-classes/application.properties | 13 ++ .../spring/boot/demo/DemoApplication.class | Bin 0 -> 740 bytes .../druid/spring/boot/demo/dao/UserDao.class | Bin 0 -> 350 bytes .../druid/spring/boot/demo/model/User.class | Bin 0 -> 1458 bytes .../boot/demo/service/UserService.class | Bin 0 -> 233 bytes .../boot/demo/service/UserServiceImpl.class | Bin 0 -> 1591 bytes .../spring/boot/demo/web/UserController.class | Bin 0 -> 1070 bytes .../test-classes/config-template.properties | 42 ++++ src/main/resources/META-INF/spring.factories | 2 - .../boot/autoconfigure/Application.java | 21 -- .../autoconfigure/service/UserService.java | 8 - .../resources/config/application.properties | 19 -- 43 files changed, 290 insertions(+), 258 deletions(-) rename {src/main/java/com/alibaba/druid/support => druid-spring-boot-starter/src/main/java/com/alibaba/druid}/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.java (85%) rename {src/main/java/com/alibaba/druid/support => druid-spring-boot-starter/src/main/java/com/alibaba/druid}/spring/boot/autoconfigure/DruidDataSourceBuilder.java (91%) rename {src/main/java/com/alibaba/druid/support => druid-spring-boot-starter/src/main/java/com/alibaba/druid}/spring/boot/autoconfigure/DruidSpringAopConfiguration.java (88%) rename {src/main/java/com/alibaba/druid/support => druid-spring-boot-starter/src/main/java/com/alibaba/druid}/spring/boot/autoconfigure/DruidStatProperties.java (92%) rename {src/main/java/com/alibaba/druid/support => druid-spring-boot-starter/src/main/java/com/alibaba/druid}/spring/boot/autoconfigure/DruidStatViewServletConfiguration.java (89%) rename {src/main/java/com/alibaba/druid/support => druid-spring-boot-starter/src/main/java/com/alibaba/druid}/spring/boot/autoconfigure/DruidWebStatFilterConfiguration.java (90%) delete mode 100644 druid-spring-boot-starter/src/main/java/org/springframework/boot/autoconfigure/jdbc/DruidAutoConfiguration.java delete mode 100644 druid-spring-boot-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json delete mode 100644 druid-spring-boot-starter/src/main/resources/META-INF/spring.provides delete mode 100644 druid-spring-boot-starter/src/test/java/com/alibaba/boot/druid/demo/DruidAutoConfigurationTest.java delete mode 100644 druid-spring-boot-starter/src/test/java/com/alibaba/boot/druid/demo/DruidDemoApplication.java create mode 100644 druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/demo/DemoApplication.java rename {src/test/java/com/alibaba/druid/spring/boot/autoconfigure => druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/demo}/dao/UserDao.java (51%) rename {src/test/java/com/alibaba/druid/spring/boot/autoconfigure => druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/demo}/model/User.java (93%) create mode 100644 druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/demo/service/UserService.java rename {src/test/java/com/alibaba/druid/spring/boot/autoconfigure => druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/demo}/service/UserServiceImpl.java (75%) rename {src/test/java/com/alibaba/druid/spring/boot/autoconfigure => druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/demo}/web/UserController.java (71%) rename src/test/resources/config/template.properties => druid-spring-boot-starter/src/test/resources/config-template.properties (80%) create mode 100644 druid-spring-boot-starter/target/classes/META-INF/spring-configuration-metadata.json create mode 100644 druid-spring-boot-starter/target/classes/META-INF/spring.factories create mode 100644 druid-spring-boot-starter/target/classes/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.class create mode 100644 druid-spring-boot-starter/target/classes/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceBuilder.class create mode 100644 druid-spring-boot-starter/target/classes/com/alibaba/druid/spring/boot/autoconfigure/DruidSpringAopConfiguration.class create mode 100644 druid-spring-boot-starter/target/classes/com/alibaba/druid/spring/boot/autoconfigure/DruidStatProperties$StatFilter.class create mode 100644 druid-spring-boot-starter/target/classes/com/alibaba/druid/spring/boot/autoconfigure/DruidStatProperties$StatViewServlet.class create mode 100644 druid-spring-boot-starter/target/classes/com/alibaba/druid/spring/boot/autoconfigure/DruidStatProperties.class create mode 100644 druid-spring-boot-starter/target/classes/com/alibaba/druid/spring/boot/autoconfigure/DruidStatViewServletConfiguration.class create mode 100644 druid-spring-boot-starter/target/classes/com/alibaba/druid/spring/boot/autoconfigure/DruidWebStatFilterConfiguration.class create mode 100644 druid-spring-boot-starter/target/test-classes/application.properties create mode 100644 druid-spring-boot-starter/target/test-classes/com/alibaba/druid/spring/boot/demo/DemoApplication.class create mode 100644 druid-spring-boot-starter/target/test-classes/com/alibaba/druid/spring/boot/demo/dao/UserDao.class create mode 100644 druid-spring-boot-starter/target/test-classes/com/alibaba/druid/spring/boot/demo/model/User.class create mode 100644 druid-spring-boot-starter/target/test-classes/com/alibaba/druid/spring/boot/demo/service/UserService.class create mode 100644 druid-spring-boot-starter/target/test-classes/com/alibaba/druid/spring/boot/demo/service/UserServiceImpl.class create mode 100644 druid-spring-boot-starter/target/test-classes/com/alibaba/druid/spring/boot/demo/web/UserController.class create mode 100644 druid-spring-boot-starter/target/test-classes/config-template.properties delete mode 100644 src/main/resources/META-INF/spring.factories delete mode 100644 src/test/java/com/alibaba/druid/spring/boot/autoconfigure/Application.java delete mode 100644 src/test/java/com/alibaba/druid/spring/boot/autoconfigure/service/UserService.java delete mode 100644 src/test/resources/config/application.properties diff --git a/druid-spring-boot-starter/pom.xml b/druid-spring-boot-starter/pom.xml index 26c469fdb1..eddfb3a47e 100644 --- a/druid-spring-boot-starter/pom.xml +++ b/druid-spring-boot-starter/pom.xml @@ -2,77 +2,25 @@ 4.0.0 - com.alibaba.boot + com.alibaba druid-spring-boot-starter - 5.1.26-SNAPSHOT + 1.0.29-SNAPSHOT jar - tddl-spring-boot-starter - http://gitlab.alibaba-inc.com/sping-boot/tddl-spring-boot-starter + druid-spring-boot-starter - 1.4.5.RELEASE 1.0.29 + 1.5.3.RELEASE - leijuan - 雷卷 - jacky.chenlb@alibaba-inc.com - https://work.alibaba-inc.com/work/u/7883 - - 开发人员 - + 李恒名 + https://github.com/lihengming/ + 89921218@qq.com - - scm:git:git@gitlab.alibaba-inc.com:spring-boot-incubator/druid-spring-boot-starter.git - scm:git:git@gitlab.alibaba-inc.com:spring-boot-incubator/druid-spring-boot-starter.git - - http://gitlab.alibaba-inc.com/spring-boot-incubator/druid-spring-boot-starter - - - - - org.springframework.boot - spring-boot-starter-web - true - - - org.springframework.boot - spring-boot-starter-actuator - - - org.springframework.boot - spring-boot-starter-jdbc - - - com.alibaba - druid - ${druid.version} - - - mysql - mysql-connector-java - - - org.springframework.boot - spring-boot-configuration-processor - true - - - junit - junit - test - - - org.springframework.boot - spring-boot-starter-test - test - - - @@ -87,4 +35,121 @@
+ + + + com.alibaba + druid + ${druid.version} + + + org.springframework.boot + spring-boot-autoconfigure + + + + org.springframework.boot + spring-boot-configuration-processor + true + + + javax.servlet + javax.servlet-api + provided + + + + org.springframework.boot + spring-boot-starter-web + test + + + + org.springframework.boot + spring-boot-starter-data-jpa + test + + + + com.h2database + h2 + test + + + + + scm:git:git@gitlab.alibaba-inc.com:spring-boot-incubator/druid-spring-boot-starter.git + scm:git:git@gitlab.alibaba-inc.com:spring-boot-incubator/druid-spring-boot-starter.git + + http://gitlab.alibaba-inc.com/spring-boot-incubator/druid-spring-boot-starter + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 2.1 + + 1.7 + 1.7 + + + + org.apache.maven.plugins + maven-surefire-plugin + + true + + + + org.apache.maven.plugins + maven-source-plugin + + + attach-sources + + jar + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + + + attach-javadocs + + jar + + + + + + org.apache.maven.plugins + maven-gpg-plugin + + + sign-artifacts + verify + + sign + + + + + + + + + releases + https://oss.sonatype.org/service/local/staging/deploy/maven2 + + + snapshots + https://oss.sonatype.org/content/repositories/snapshots + + https://oss.sonatype.org/content/groups/public + diff --git a/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.java b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.java similarity index 85% rename from src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.java rename to druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.java index aa61a3a9c0..21bf9082dd 100644 --- a/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.java +++ b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.druid.support.spring.boot.autoconfigure; +package com.alibaba.druid.spring.boot.autoconfigure; import com.alibaba.druid.pool.DruidDataSource; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; @@ -43,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' settings,'spring.datasource' prefix settings will be used. if (dataSource.getUsername() == null) { dataSource.setUsername(env.getProperty("spring.datasource.username")); } @@ -56,8 +56,8 @@ 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"))) { + // set filters default value on StatViewServlet enabled. + if (! "false".equals(env.getProperty("spring.datasource.druid.StatViewServlet.enabled"))) { try { dataSource.setFilters("stat"); } catch (SQLException e) { diff --git a/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidDataSourceBuilder.java b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceBuilder.java similarity index 91% rename from src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidDataSourceBuilder.java rename to druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceBuilder.java index 52f2d943c6..fd1efb0408 100644 --- a/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidDataSourceBuilder.java +++ b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceBuilder.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.druid.support.spring.boot.autoconfigure; +package com.alibaba.druid.spring.boot.autoconfigure; import com.alibaba.druid.pool.DruidDataSource; @@ -42,7 +42,7 @@ public class DruidDataSourceBuilder { return dataSource; } - //use RelaxedDataBinder by reflection config druid . + //use spring boot relaxed binding by reflection config druid . detail see Spring Boot Reference Relaxed binding section. private void bind(DruidDataSource result) { MutablePropertyValues properties = new MutablePropertyValues(this.properties); new RelaxedDataBinder(result) diff --git a/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidSpringAopConfiguration.java b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidSpringAopConfiguration.java similarity index 88% rename from src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidSpringAopConfiguration.java rename to druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidSpringAopConfiguration.java index 44a7788e12..4f3849e641 100644 --- a/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidSpringAopConfiguration.java +++ b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidSpringAopConfiguration.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.druid.support.spring.boot.autoconfigure; +package com.alibaba.druid.spring.boot.autoconfigure; import com.alibaba.druid.support.spring.stat.DruidStatInterceptor; import org.aopalliance.aop.Advice; @@ -26,7 +26,6 @@ import org.springframework.context.annotation.Bean; /** * @author lihengming<89921218@qq.com> - * @see Druid和Spring关联监控配置 */ @ConditionalOnProperty("spring.datasource.druid.aop-patterns") public class DruidSpringAopConfiguration { diff --git a/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidStatProperties.java b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidStatProperties.java similarity index 92% rename from src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidStatProperties.java rename to druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidStatProperties.java index 1dd58d8195..520a1ea22d 100644 --- a/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidStatProperties.java +++ b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidStatProperties.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.druid.support.spring.boot.autoconfigure; +package com.alibaba.druid.spring.boot.autoconfigure; import org.springframework.boot.context.properties.ConfigurationProperties; @@ -51,9 +51,6 @@ public class DruidStatProperties { this.statFilter = statFilter; } - /** - * @see StatViewServlet配置 - */ public static class StatViewServlet { private String urlPattern; private String allow; @@ -111,9 +108,6 @@ public class DruidStatProperties { } } - /** - * @see 配置WebStatFilter - */ public static class StatFilter { private String urlPattern; private String exclusions; diff --git a/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidStatViewServletConfiguration.java b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidStatViewServletConfiguration.java similarity index 89% rename from src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidStatViewServletConfiguration.java rename to druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidStatViewServletConfiguration.java index 46ef792391..89ad8e59d8 100644 --- a/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidStatViewServletConfiguration.java +++ b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidStatViewServletConfiguration.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.druid.support.spring.boot.autoconfigure; +package com.alibaba.druid.spring.boot.autoconfigure; import com.alibaba.druid.support.http.StatViewServlet; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -22,9 +22,8 @@ import org.springframework.context.annotation.Bean; /** * @author lihengming<89921218@qq.com> - * @see StatViewServlet配置 */ -@ConditionalOnProperty(name = "spring.datasource.druid.StatViewServlet.enabled", havingValue = "true", matchIfMissing = false) +@ConditionalOnProperty(name = "spring.datasource.druid.StatViewServlet.enabled", havingValue = "true", matchIfMissing = true) public class DruidStatViewServletConfiguration { @Bean public ServletRegistrationBean servletRegistrationBean(DruidStatProperties properties) { diff --git a/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidWebStatFilterConfiguration.java b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidWebStatFilterConfiguration.java similarity index 90% rename from src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidWebStatFilterConfiguration.java rename to druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidWebStatFilterConfiguration.java index e63be121da..3ca1b85763 100644 --- a/src/main/java/com/alibaba/druid/support/spring/boot/autoconfigure/DruidWebStatFilterConfiguration.java +++ b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidWebStatFilterConfiguration.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.alibaba.druid.support.spring.boot.autoconfigure; +package com.alibaba.druid.spring.boot.autoconfigure; import com.alibaba.druid.support.http.WebStatFilter; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -22,9 +22,8 @@ import org.springframework.context.annotation.Bean; /** * @author lihengming<89921218@qq.com> - * @see 配置WebStatFilter */ -@ConditionalOnProperty(name = "spring.datasource.druid.WebStatFilter.enabled", havingValue = "true", matchIfMissing = false) +@ConditionalOnProperty(name = "spring.datasource.druid.WebStatFilter.enabled", havingValue = "true", matchIfMissing = true) public class DruidWebStatFilterConfiguration { @Bean public FilterRegistrationBean filterRegistrationBean(DruidStatProperties properties) { diff --git a/druid-spring-boot-starter/src/main/java/org/springframework/boot/autoconfigure/jdbc/DruidAutoConfiguration.java b/druid-spring-boot-starter/src/main/java/org/springframework/boot/autoconfigure/jdbc/DruidAutoConfiguration.java deleted file mode 100644 index 8853530a4f..0000000000 --- a/druid-spring-boot-starter/src/main/java/org/springframework/boot/autoconfigure/jdbc/DruidAutoConfiguration.java +++ /dev/null @@ -1,43 +0,0 @@ -package org.springframework.boot.autoconfigure.jdbc; - -import com.alibaba.druid.pool.DruidDataSource; -import com.alibaba.druid.support.http.StatViewServlet; -import org.springframework.boot.autoconfigure.AutoConfigureBefore; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.boot.web.servlet.ServletRegistrationBean; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import javax.servlet.http.HttpServlet; -import javax.sql.DataSource; -import javax.sql.XADataSource; - -/** - * druid auto configuration - * - * @author leijuan - */ -@SuppressWarnings("SpringJavaAutowiringInspection") -@Configuration -@ConditionalOnClass(DruidDataSource.class) -@AutoConfigureBefore(DataSourceAutoConfiguration.class) -@EnableConfigurationProperties(DataSourceProperties.class) -public class DruidAutoConfiguration { - - @Bean - @ConfigurationProperties(prefix = "spring.datasource.druid") - @ConditionalOnMissingBean({DataSource.class, XADataSource.class}) - public DataSource dataSource(DataSourceProperties properties) { - return properties.initializeDataSourceBuilder().type(DruidDataSource.class).build(); - } - - @Bean - @ConditionalOnClass(HttpServlet.class) - public ServletRegistrationBean druidStatViewServlet() { - return new ServletRegistrationBean(new StatViewServlet(), "/druid/*"); - } - -} diff --git a/druid-spring-boot-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/druid-spring-boot-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json deleted file mode 100644 index f3579b2411..0000000000 --- a/druid-spring-boot-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "groups": [ - { - "name": "spring.datasource.druid", - "type": "com.alibaba.druid.pool.DruidDataSource", - "sourceType": "org.springframework.boot.autoconfigure.jdbc.DruidAutoConfiguration", - "sourceMethod": "dataSource(org.springframework.boot.autoconfigure.jdbc.DataSourceProperties)" - } - ] -} \ No newline at end of file diff --git a/druid-spring-boot-starter/src/main/resources/META-INF/spring.factories b/druid-spring-boot-starter/src/main/resources/META-INF/spring.factories index 722d06388c..a2c21bc315 100644 --- a/druid-spring-boot-starter/src/main/resources/META-INF/spring.factories +++ b/druid-spring-boot-starter/src/main/resources/META-INF/spring.factories @@ -1 +1,2 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=org.springframework.boot.autoconfigure.jdbc.DruidAutoConfiguration +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ +com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure \ No newline at end of file diff --git a/druid-spring-boot-starter/src/main/resources/META-INF/spring.provides b/druid-spring-boot-starter/src/main/resources/META-INF/spring.provides deleted file mode 100644 index aaa8cab665..0000000000 --- a/druid-spring-boot-starter/src/main/resources/META-INF/spring.provides +++ /dev/null @@ -1 +0,0 @@ -provides: druid-spring-boot-starter \ No newline at end of file diff --git a/druid-spring-boot-starter/src/test/java/com/alibaba/boot/druid/demo/DruidAutoConfigurationTest.java b/druid-spring-boot-starter/src/test/java/com/alibaba/boot/druid/demo/DruidAutoConfigurationTest.java deleted file mode 100644 index 397b4d27a3..0000000000 --- a/druid-spring-boot-starter/src/test/java/com/alibaba/boot/druid/demo/DruidAutoConfigurationTest.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.alibaba.boot.druid.demo; - -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.ImportAutoConfiguration; -import org.springframework.jdbc.core.JdbcTemplate; -import org.springframework.test.context.ActiveProfiles; -import org.springframework.test.context.TestPropertySource; -import org.springframework.test.context.junit4.SpringRunner; - -import javax.sql.DataSource; -import java.util.List; -import java.util.Map; - -/** - * druid auto configuration test - * - * @author leijuan - */ -@RunWith(SpringRunner.class) -@ImportAutoConfiguration(DruidDemoApplication.class) -@TestPropertySource("classpath:application.properties") -public class DruidAutoConfigurationTest { - @Autowired - private DataSource dataSource; - @Autowired - private JdbcTemplate jdbcTemplate; - - @Test - public void testDatabaseOperations() { - Assert.assertNotNull(dataSource); - } - -} diff --git a/druid-spring-boot-starter/src/test/java/com/alibaba/boot/druid/demo/DruidDemoApplication.java b/druid-spring-boot-starter/src/test/java/com/alibaba/boot/druid/demo/DruidDemoApplication.java deleted file mode 100644 index e1a12f3ee4..0000000000 --- a/druid-spring-boot-starter/src/test/java/com/alibaba/boot/druid/demo/DruidDemoApplication.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.alibaba.boot.druid.demo; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -/** - * druid demo application - * - * @author leijuan - */ -@SpringBootApplication -public class DruidDemoApplication { - public static void main(String[] args) throws InterruptedException { - SpringApplication.run(DruidDemoApplication.class, args); - } -} diff --git a/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/demo/DemoApplication.java b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/demo/DemoApplication.java new file mode 100644 index 0000000000..a8deab6a35 --- /dev/null +++ b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/demo/DemoApplication.java @@ -0,0 +1,21 @@ +package com.alibaba.druid.spring.boot.demo; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * @author lihengming<89921218@qq.com> + * + *

一个简单的使用演示

+ *

1.按需配置application.properties,配置项请参考config-template.properties

+ *

2.run DemoApplication

+ *

3.访问http://127.0.0.1:8080/druid

+ *

4.访问/user/${id}接口,查看SQL、Web、AOP监控效果,如:http://127.0.0.1:8080/user/1

+ * + */ +@SpringBootApplication +public class DemoApplication { + public static void main(String[] args) { + SpringApplication.run(DemoApplication.class, args); + } +} diff --git a/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/dao/UserDao.java b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/demo/dao/UserDao.java similarity index 51% rename from src/test/java/com/alibaba/druid/spring/boot/autoconfigure/dao/UserDao.java rename to druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/demo/dao/UserDao.java index 965e27f376..6037cdbfae 100644 --- a/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/dao/UserDao.java +++ b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/demo/dao/UserDao.java @@ -1,7 +1,7 @@ -package com.alibaba.druid.spring.boot.autoconfigure.dao; +package com.alibaba.druid.spring.boot.demo.dao; -import com.alibaba.druid.spring.boot.autoconfigure.model.User; +import com.alibaba.druid.spring.boot.demo.model.User; import org.springframework.data.repository.CrudRepository; public interface UserDao extends CrudRepository {} diff --git a/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/model/User.java b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/demo/model/User.java similarity index 93% rename from src/test/java/com/alibaba/druid/spring/boot/autoconfigure/model/User.java rename to druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/demo/model/User.java index 4d3fc16c92..32eadfa2be 100644 --- a/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/model/User.java +++ b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/demo/model/User.java @@ -1,4 +1,4 @@ -package com.alibaba.druid.spring.boot.autoconfigure.model; +package com.alibaba.druid.spring.boot.demo.model; import javax.persistence.Entity; import javax.persistence.GeneratedValue; diff --git a/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/demo/service/UserService.java b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/demo/service/UserService.java new file mode 100644 index 0000000000..b9e5075a9c --- /dev/null +++ b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/demo/service/UserService.java @@ -0,0 +1,8 @@ +package com.alibaba.druid.spring.boot.demo.service; + + +import com.alibaba.druid.spring.boot.demo.model.User; + +public interface UserService { + User findById(Long id); +} diff --git a/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/service/UserServiceImpl.java b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/demo/service/UserServiceImpl.java similarity index 75% rename from src/test/java/com/alibaba/druid/spring/boot/autoconfigure/service/UserServiceImpl.java rename to druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/demo/service/UserServiceImpl.java index a8bf4b9108..d6cac398cf 100644 --- a/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/service/UserServiceImpl.java +++ b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/demo/service/UserServiceImpl.java @@ -1,7 +1,8 @@ -package com.alibaba.druid.spring.boot.autoconfigure.service; +package com.alibaba.druid.spring.boot.demo.service; -import com.alibaba.druid.spring.boot.autoconfigure.dao.UserDao; -import com.alibaba.druid.spring.boot.autoconfigure.model.User; + +import com.alibaba.druid.spring.boot.demo.dao.UserDao; +import com.alibaba.druid.spring.boot.demo.model.User; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/web/UserController.java b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/demo/web/UserController.java similarity index 71% rename from src/test/java/com/alibaba/druid/spring/boot/autoconfigure/web/UserController.java rename to druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/demo/web/UserController.java index ce54065c45..7ad2b5d68b 100644 --- a/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/web/UserController.java +++ b/druid-spring-boot-starter/src/test/java/com/alibaba/druid/spring/boot/demo/web/UserController.java @@ -1,7 +1,8 @@ -package com.alibaba.druid.spring.boot.autoconfigure.web; +package com.alibaba.druid.spring.boot.demo.web; -import com.alibaba.druid.spring.boot.autoconfigure.model.User; -import com.alibaba.druid.spring.boot.autoconfigure.service.UserService; + +import com.alibaba.druid.spring.boot.demo.model.User; +import com.alibaba.druid.spring.boot.demo.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/druid-spring-boot-starter/src/test/resources/application.properties b/druid-spring-boot-starter/src/test/resources/application.properties index 8d0970e716..0ca9a476fb 100644 --- a/druid-spring-boot-starter/src/test/resources/application.properties +++ b/druid-spring-boot-starter/src/test/resources/application.properties @@ -1,5 +1,13 @@ -spring.datasource.driver-class-name=com.mysql.jdbc.Driver -spring.datasource.url=jdbc:mysql://localhost:3306/druid -spring.datasource.username=root -spring.datasource.password=123456 - \ No newline at end of file +# JDBC +spring.datasource.url=jdbc:h2:file:./demo-db +spring.datasource.username=sa +spring.datasource.password=sa +spring.datasource.driver-class-name=org.h2.Driver +#启用Spring关联监控配置 +spring.datasource.druid.aop-patterns=com.alibaba.druid.spring.boot.demo.service.* +#其他配置,参考config-template.properties + +# JPA +spring.jpa.show-sql= true +spring.jpa.hibernate.ddl-auto=create-drop + diff --git a/src/test/resources/config/template.properties b/druid-spring-boot-starter/src/test/resources/config-template.properties similarity index 80% rename from src/test/resources/config/template.properties rename to druid-spring-boot-starter/src/test/resources/config-template.properties index e6c0afd9ad..3c4b2d3af7 100644 --- a/src/test/resources/config/template.properties +++ b/druid-spring-boot-starter/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数据源配置###### +# JDBC配置 +spring.datasource.url= #别名为spring.datasource.druid.url +spring.datasource.username= #别名为spring.datasource.druid.username +spring.datasource.password= #别名为spring.datasource.druid.password +spring.datasource.driver-class-name= #别名为spring.datasource.druid.driver-class-name,非必填项可通过url解析 +# 连接池配置,下面配置说明请参考Druid Github Wiki,配置_DruidDataSource参考配置 spring.datasource.druid.initialSize= spring.datasource.druid.minIdle= spring.datasource.druid.maxActive= diff --git a/druid-spring-boot-starter/target/classes/META-INF/spring-configuration-metadata.json b/druid-spring-boot-starter/target/classes/META-INF/spring-configuration-metadata.json new file mode 100644 index 0000000000..f90d6c2cf8 --- /dev/null +++ b/druid-spring-boot-starter/target/classes/META-INF/spring-configuration-metadata.json @@ -0,0 +1,35 @@ +{ + "hints": [], + "groups": [ + { + "sourceType": "com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure", + "name": "spring.datasource.druid", + "sourceMethod": "dataSource(org.springframework.core.env.Environment)", + "type": "javax.sql.DataSource" + }, + { + "sourceType": "com.alibaba.druid.spring.boot.autoconfigure.DruidStatProperties", + "name": "spring.datasource.druid", + "type": "com.alibaba.druid.spring.boot.autoconfigure.DruidStatProperties" + }, + { + "sourceType": "com.alibaba.druid.spring.boot.autoconfigure.DruidStatProperties", + "name": "spring.datasource.druid.stat-filter", + "sourceMethod": "getStatFilter()", + "type": "com.alibaba.druid.spring.boot.autoconfigure.DruidStatProperties$StatFilter" + }, + { + "sourceType": "com.alibaba.druid.spring.boot.autoconfigure.DruidStatProperties", + "name": "spring.datasource.druid.stat-view-servlet", + "sourceMethod": "getStatViewServlet()", + "type": "com.alibaba.druid.spring.boot.autoconfigure.DruidStatProperties$StatViewServlet" + } + ], + "properties": [ + { + "sourceType": "com.alibaba.druid.spring.boot.autoconfigure.DruidStatProperties", + "name": "spring.datasource.druid.aop-patterns", + "type": "java.lang.String[]" + } + ] +} \ No newline at end of file diff --git a/druid-spring-boot-starter/target/classes/META-INF/spring.factories b/druid-spring-boot-starter/target/classes/META-INF/spring.factories new file mode 100644 index 0000000000..a2c21bc315 --- /dev/null +++ b/druid-spring-boot-starter/target/classes/META-INF/spring.factories @@ -0,0 +1,2 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ +com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure \ No newline at end of file diff --git a/druid-spring-boot-starter/target/classes/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.class b/druid-spring-boot-starter/target/classes/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.class new file mode 100644 index 0000000000000000000000000000000000000000..85f15c8d37dc3c5b57868c39df1b85dd2dff113f GIT binary patch literal 2788 zcmb_eTUQfT6#j+)Ny8`*rB>*T+R^|?hKf=x77aH=!$pJGYHuf#0}f1P!psEeU+Ev{ zYx{z2ANtz0`kT7C`kl!Di3y6XX04pd-ury}a`xV5{{HumKLJdln#4s+CvgK`s$nLH zo4A!gz6Z0IQ=54;EF`d~=G$txlfaUi@2cTm0tGcMC$N&hY7%R>pTGk}D#o#%#M^in z$3`5FG<4sv94na75KE74Xy}}C%Thyc!E)qEtx}TSx+vMCqzbMn>Hj zr!^$YM=TAq>4NKRMPQqrsK{row_}(taip_nEI50X=QU0UZL@1cKT`~Zxw9;)VZ`G2it*QQ z@j=ZAtcu*Qe2dY{JB}L&WeDRSywHB7Ztf9PXFV48e+I`}}OpvdhxrgJybC1dQ8adi3?vsRfXE-c?fAd?VTdwsVDt zdbVWnFv=(m=XvxvFvUQ?4LjosQTZj$GQ1_WAa<|63WD4QM7M&lS^1!vYCC+@(cPK z+7JB=?Tm$5rjDQcmpaqwIlHR_NILDb!_3W|yXQRTIp;k0F2Dcz>k9y5sOoqdlNv7T zNMW)I9hlNEtl3Q%<1UCd=_IG7P9z+t;H;^WpSM!Kh5Gs zH*TWD%aV>|+~Vano1ba8BcL}tx1qeiR=z-QX+u7dW*FFxxg;A?0$pXhR+mBODS`3* zZ>M9^k@cEc4m`VFn>xHRLl~XYcHItU1k(AD6@kpWTP3vKl3iEJ;ijd$yV7!KCs%SS z(piz7&33Yx3D#|5wot0Lo2GPZOIp&bdZAr4{RSsBE!Pc983t~}t*_ZNqG~Si`vn=u zvKx98H5b}WRe4OM;wc$WuEqSw|AW|JF}OgXC1AsKor7$MhF*QmO(5TbNSnBfW!EWJ z@gIk9zdJqUhfW}HzT|qfq-$%Q+*D6p@3CnqS@+GQFyN-&j>WLGBArnA#Pryv+_Ka) z6)br66Xnf2()X7sl!h644$mx7OtT0Cx~qH60zKtGRvwd_l8Nf^P!?^T`H9w}I>)F6 z-oq(@{yj}zm;O2d890e|1m^y`Bm{;JgS2YCfeScg;2cZ=^Ix`+>nOJiWAXA-%{$7G z->68nb7U)z!|n?79c-|Gwo$bz_dLhIJ$8q6>AXH@ z_DODsM~AgC(pr-3n?jO2n{OQy>G*(vnQqUXen>l{PP!)oY1jRmYO75#4@urNMfDFi zm+`99rZSQ(fzg(l;5v9#Cf`Mt^i_O{h{KxaZr+HeNJ4JTk~HgYI@1D?+L9x}hYslg z-AV`bL%!)oNX1Pwr%ftp@@`))3A2MfR)C;S6&*$TeV42hhG<{#sipNa?aUxePe5N` z2cocx)ank>KO^%~#9-evM;{X4)h`irlP&^UzzSVTDzr2lH?nq({ur<1k z!M*yA6ATE{z=zbs^OWWStz)=Ie@ta4PLfcebmYfWnC?mP@yhm1bQi8Ssr!F1H4nBXN0V1oZYp$1}*Jc z`c71;5{XDW01s7hXT8C}T9872?9Sbpx#ynyx$pmb`wqYjEP6PKdI_^03T~bA@Dmyy zDrkBrf|qd3LmBnMv~%4_^CjFU;U>d$Wc23N6JZ9@E(Icv8Q3$1Gmn$ds&&~>vFZl0 z6^7aht8_@`H{03_cpMoO4*Eu{%U9a`#k*33G4BiCYO}?~M+M#yK_V9!4sAGr;mXYG zp>9*?sF|8?*wlW*cLWytB8cVR43l?MsO(*aiCVqGP+ZbIQa{#KpR3xh zOWA(vH#smVdK=0ogXe1XGz7$71c4HvFFDD)m7dehMs9@2j+L8aa}=BV6g0YDa>%hZ z487V{5T?wm8XZYvm5djM+{V+h$B(R#L65?o-Dhb1Z<7qCGY?u6PvWwG-nof)_e^aiME_|T^nlHtMVE8@P zd`>Y@x_ipC45vaGN+Ng^W|`U|PiC?{=m{(0ltnYGP}dlZNLVXP7+3HOPBJXy)Nv9; z+St8%j;Rc?3MT0x)f%}Kr8!v4YgiYtID>dB2XZs|Q`#50x2jcW{bVl#CH!2$E&Ni! z_xQn)`IX_1&*2?B0~Ji+SOvGS!0;f)$Fvy_*sCO z6phH1j#jh8Fr2K_pSMSr)~uU|l-K!M&i0okh8u4uV(GegY!(-5&*~jqq_KUJ20f$c zPT`_;n!b+EdYqnWj1x5EnJW}}pQ0m9E2H($><-vJBouI(-jnI(d3;N9Wq1K+@Ev_I zmtDH$l;>%6%H>@Yp6+1c4axiUFYnVYXZnthLqAI^4M?2Nu$GBff%c|%QG7bLO@y{F zxr5R;=4^_2YIrxpBrRMZ--q6g&@bV~41I-GhhE)9nV24K&&~b|ZyQJEM)*^hpc|b2 odDjT<`aV0=%uX2|E@5WOP63xmuYfCQtf%PoDm~TbU@>YR0N>Ri8UO$Q literal 0 HcmV?d00001 diff --git a/druid-spring-boot-starter/target/classes/com/alibaba/druid/spring/boot/autoconfigure/DruidStatProperties$StatFilter.class b/druid-spring-boot-starter/target/classes/com/alibaba/druid/spring/boot/autoconfigure/DruidStatProperties$StatFilter.class new file mode 100644 index 0000000000000000000000000000000000000000..4e4a7710d688c3fe3b1cffa06e70b97185b23a30 GIT binary patch literal 2087 zcmb`G%}-N75Wr_kKj`yS3Y3E1qNoLwr{cE;4;2$lMUpD_?PIBnkGIYHFnG|!gC-s{ z@t}zZO+0AgL8FPr#DjkTf0S|Nwb1stJ?Uj;cXnp?H#0jMzkmJ$fLXX;fB`dE$bv=U zIEfP^PLh}w)z z(NhiK1ycAE?aQ%5xw;5$chs>^n$%S?=Xbk}l>YXjbm_YJj-pds=e~&Nt)db}yAMTl z)E*SNBR0!i==R?08SbdP>$fvLd{U8rhWkX8o3owrX!<* zQCyo%2N;80xMQ#z_Mq$z{sxIJvEcjK;JvV~6+DOJ33_U3`a2}rPaBc-0i@tzbVIS} z)q0-LC~uudENtr zI!_=IT98y62F$M6{4L96&-&VuH(NxAHoT_*Wo- zkT~!I_)&}Wl6zjzXOL(M|09Ef7j&e*A7TLSisSt* z55s<-+6;0^ghD^|dDFww)I;e@z0M$Bt~BtD&7h6e*_!ml^Io?p)ZW0aR0~?%Yj7oL zKQt!vdl{m4U31-#qF)#4$P=1D{;BT^wdr9}fetTft)T02Pd0gzyKU8zZ8tn5e76|{ z+T}eRv;zN~?DUjyx9FU%+*QG$P+E#`*~oxZ7dk@kkF{p5T(LE$fVGah&6of7qQcX7 z-J?Mt(-<;bI%wUBy6T{DuqvXhHre7L9-5|OuTkUwc#TXm==E~^IcD&t2}8CX^i)f1 zOM0wDOKVnXBJywoN_ogaE)RJU1rjqPW=Rww=fGVCJOB9|7!*eXxzjulEqwfqe@p^P zIR6>^C@F|hNw|tpRguQRB8|008q13`R*1R)j5>kxB<@_)40W>l4cO<%Z4PBBGTw)I zT;~T4umGoV$KVW{ML8M#1!A9!;0rK+xch1e){HnMI)61Jin76x9! z^n^zB67>ZuNZbT@Vg}LEc(HuG&FTCP)iG+EYMi<_YAQ6~r+? mI#!VDb`Zw|`G6qa6cGA!3`e*eeUAz(qRyfv4Y%PGWPStO6eaTj literal 0 HcmV?d00001 diff --git a/druid-spring-boot-starter/target/classes/com/alibaba/druid/spring/boot/autoconfigure/DruidStatProperties.class b/druid-spring-boot-starter/target/classes/com/alibaba/druid/spring/boot/autoconfigure/DruidStatProperties.class new file mode 100644 index 0000000000000000000000000000000000000000..b927e543519d99587ef847b1460831fdbfd73241 GIT binary patch literal 1984 zcmb_dT~8B16g^W~3d>Tk$d{;yptME0D)^+q5Y$9d0WE1_e44gH9o+6VyR+cW(nLa{ zi9f&}WxTVyK(nq-^kH{q@7{avxp(Hw{QmRf7k~{sF<@XlkE($T)<-c4E02c;a?!^l zZF!u>Mjo3CMqP3BO4>?z4CZUc5#El?eP8$t6Z&66ij%tVj%}eB#<<(t=Zc&i`akut zcEpdlWpk%v)s-im&Qpr=lTq(#Ew^iNTQ+%yzjX^;VCKnl>`yWV(2XAylVqV5TOzF@H6R1wZ$-0DmNIiJ8oN0T{Y>5-JshP z-T`mgWGU9%7PlMRllnV0X4NN2z1hAhCE`)&2({hc@aa-HwdDmr;W$%D@zb>w2{O@4 zhI*-dRkkTBR3uXWq&g@KJd-YKJTB{eL+lQyqKhpt9v5?-U~e#W#Q3@dqwWS?OOSRHrjZ(V{QjTV>VK0wapdxLweOvy(X?>nqhCivNkb^YYcA&0ULGJL=jUa z3YcJcennV@$;;DjuX!X|3QKg98g%Fm(Md~5XqM46gd=69F%PDjMeiBmziY!fYG#x%g{#zJ4OYZ_X19QmY20<^-3^1c`%##f?U%<^6+M-cI=PKVZ z@|7kTXprI1xY!q*y9mC8+i~y~d1thDW$hFrmlX630xZ+ju@WN8L|!q1M%PvA#EZBS zWAzisCW)-35?R9CG$Pp~ku@Un;6Frk+clA8q8c^3pGZDQ#7ZS{5BJlE^esx%kqsiU p`5z*B-RbJUYPbd^lxZ9zONE{_pZJ?(C{iPHw0Xwp$s`^Lz+P)B}QTv#O{-~yB)@~rKrAnY$XlLfk&b{Z}IrlDq{`K1*0H&~=!Z5C< zFpC=&K1m^l>lWrxNEk4Nn-=C%xPpZwZkhFMv-mWLJ7%$H7M~??*NnL&mdv=E#EKbL zlelML%|c$Fd&c!#Ju47Pj}-*s^L|+g^yOSnEjMaK6|Bo*mB>KOFUe{_2CiARz_{LV zLxGiC$*(!G>K0{DI_03@mYuL3xL(C6`o4B#L;EG)+jc9BKsgI$Kd+@OxN0x2g59dp z^Q~Q}UEiA)I2$(cHC1s#9YpX=B|U-f(?@f*8u)b;Xjg^PV>v&lv&m*G`LCI|Z^!)n6JDm^(HfUP3cF7S@^iw$upNi=L-~`Kk;<#cba@uEWc19vG1w z97?pn>~S;HOBba_OR^pbCDPgkqoa&16sTK)b88JxyERpCLzjY@^E{uD;O#TQOh@<3 zkyekXrkAfeMiS;e@_r*IsoSm*>ga#!EBjFHN`X5ay>t*P9hY50&7n-2Gg)2nT8er? z0&$Nj5@=~ETb5de5v6QY4B57XXO(A)s4UR4BX?OQ1zBzId|U@+I9Zdrw6nOqj)DcU9qP4Fuls>^cC@ZLZG3HP;=Vw?$(vJ^EbF{B)oo)7 z4+N5}k{`G6CBCxpwE+{dTJ`sAd;@8tXpneWc~5MV%)GbiS6pv{rDif`qkI6aQsykk zvJGXxooNgA9pTH{zt3Kn2naXSu`rI|Tis zK2{;$T077l-o#mcj?J$NY+o4R^E_7$N5L^M{uJWZX!|ujyCd*CUgz9yzJLq3$d$kw zG}dJfi*-wgBq|GKgE4w2-lowP=hh$HLqE6EAr7)y>4griE)m{ruq_ uS~B^c;uyobe0Jfz2puN+KCutBAVPeIk3xnseIGNp%C}P7y~4OhapG?e0>Kyn literal 0 HcmV?d00001 diff --git a/druid-spring-boot-starter/target/classes/com/alibaba/druid/spring/boot/autoconfigure/DruidWebStatFilterConfiguration.class b/druid-spring-boot-starter/target/classes/com/alibaba/druid/spring/boot/autoconfigure/DruidWebStatFilterConfiguration.class new file mode 100644 index 0000000000000000000000000000000000000000..a5289d1be501bd8955188ff80b4c099bc5d6136c GIT binary patch literal 2739 zcmbtW-*XdH6#j0Lbkneb{<44|pjJtLBrAfTlpmJTN+Bt=Ek!`lo8&g#cDtL|-IV&q zi{qO!KIxk?jx)aMOPP_;8DDttkFtJuH}q%F!RF!K-0$o?=ey^8_w4@l_iujyIE#7) z$1s+`b&MOB$RL3+10Q9O(qIBN3`}N_!_72q>2)!Ul3q`xaa*sa_2T0+X7oIp#+;t- zq%p7OyJ>u)=X+_~H}Jr~rvmMlY}XF22qba?^8(2+uc`zN6>V2dHCD>XpOa;WNO#ez zNM~O9wq7^EWVmPt0;OWbTd|~Lmt|R6Rli|Zt)TAPZp|utUTDci=v6#-!LBuYWnI_y zyQ(}J%5cJVLgkM&Z8EeycSN9XA%bUA%??68La!<53Ovred?X!a+V|?p4{a5U3=}=T z)?~Nf%N6y=^Os|qk5t(Tl)vhz(29xeW9iCaw1?(x-N6$ z$RJQma&f=0`nR0(9G(82>|WkyYTDzn2^3mUZPe?YA6koHShsdmpJcM6R#`5|dZepJ znh%)}UI1#}z~>abz|on88`>*s-VSU^aMX1@mX?ZPa`G*yGqa&uqy9D@wX}|O6=%JM zUs0?wrQQD@iYzS2RVi?zWsDXAXV|K(iCGkO{7*W!-KGe?WcZ{@;gNNGNeWdN${-?C zh%QfIM}7**)mN@6a9~lc@>0!9r@`IH(AU$!6&Y3*Cl^X~5YU)l7ZE0o<23^hO?&|| zAK8cG1%_K(?iUu*L>U#TOQ+0oBs;)ts2hQaDoD1?8Z@zh8Y`gIDo!KN#iOvfyV8MH{5J4bYf%4#IoMk#p|K{XnBuEsWRbcL(eutNv@4~ z)Q^c3ZR*wCsbbfqGaGN7VnIx}(Y8(7nCC6qDmHoAl;!28$W;k!n!rHD*J)&P;n#djBnU*16Dtuk^l1K}_2W7Ro^%%QHU#`Wuo;w`h)F~^(os)cB zPD}mfU=V@RF`w;PAK4pJJL}bH+AUQE-w8h#s=#3yrd!A~-m+=g5-IsbTee9Quj5sI zPv~D8gzgF)PjF>%7MxRqPauAc%qKavN8mA>;(s%KfG*zPO5jcO(+M|=KlwG1BKFhJ zI@(H4k+}B+$*HGEac;ku%pXmz!^kIpNBUl3cpV+jkkQl6NOfms*Kr`I1-5a^A8z6dx>pf3iFM8Hu3M+oG9AYJd+hdLP%A5+FlsjvuE3==cXUaSsOo literal 0 HcmV?d00001 diff --git a/druid-spring-boot-starter/target/test-classes/application.properties b/druid-spring-boot-starter/target/test-classes/application.properties new file mode 100644 index 0000000000..0ca9a476fb --- /dev/null +++ b/druid-spring-boot-starter/target/test-classes/application.properties @@ -0,0 +1,13 @@ +# JDBC +spring.datasource.url=jdbc:h2:file:./demo-db +spring.datasource.username=sa +spring.datasource.password=sa +spring.datasource.driver-class-name=org.h2.Driver +#启用Spring关联监控配置 +spring.datasource.druid.aop-patterns=com.alibaba.druid.spring.boot.demo.service.* +#其他配置,参考config-template.properties + +# JPA +spring.jpa.show-sql= true +spring.jpa.hibernate.ddl-auto=create-drop + diff --git a/druid-spring-boot-starter/target/test-classes/com/alibaba/druid/spring/boot/demo/DemoApplication.class b/druid-spring-boot-starter/target/test-classes/com/alibaba/druid/spring/boot/demo/DemoApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..76ea0746c22ac82dfa7f1d660f75a2e5d596c929 GIT binary patch literal 740 zcmb7CJx?Ps5Pc4Tge80>ISvjQx{v}(fM|k{I1tt9kjN=lT;<)EVA!=I#|!)|DiFo} zfcsI1@g@>06bf9-Xl6Wb-W&V>>&rg?``8LlMzex%0oL%nf^~+uBc+u)W|(R1^cc#g zrY{+mL#5@fERCf7Euw@n_0Ys3=?SZRJV}<_wHh%Tgt1AvNK_;u!TUB-eLfmmr3XAR z#__&P4L>7uG8`r<7ET%6p;@U=nqjT=H@p#df+vC+y3Y4?axTIS2)!|-%n)=JBv4aWAD=SiYZ|v=uuE?B;jlNQY%u3$P zh5RHPMfNq!Vvb?&>%uG8sNn}T8CKp^Uqm-Db`0%LNsVa~DA0@9jMf*o3fmjwbf#=< zXR2P3>EwgsrxUsUZ3{Cf?aLi(qeMT)pAwjtPPRf3C(p>wwx7Tr^KzA}F9WNXCtDj| zK!62`<|$sJjBh^7!GLPL)PBaypZETNDnNs7H47M3EMb}QC9LFj6?O7{Rs(ng2(QEa literal 0 HcmV?d00001 diff --git a/druid-spring-boot-starter/target/test-classes/com/alibaba/druid/spring/boot/demo/dao/UserDao.class b/druid-spring-boot-starter/target/test-classes/com/alibaba/druid/spring/boot/demo/dao/UserDao.class new file mode 100644 index 0000000000000000000000000000000000000000..4f05660704cb078733ff21bc7f85d22c745be6dc GIT binary patch literal 350 zcmb7A%}T>S5dKzeV`~pSNeA>8@uGMN2rWLqB)cwKlT4XxEPVps$wMEY4^`X-5%E+H z^9M8E&+HGMI{>%1%5a%sl3{8vSq9&7?9~~36f1sbs=4*_T&`Rd^Fq{9x7N`5SLMcS zMBm7AWKy@5E=18SJ!o$iKjU3dNkd$Rl1nD5eX!pMREk8ht`Ta)x|&`(r};0^LRz2S z=LXZI^jf*6P$yZln=H8wCfOL3llh}2ySd4%y$ Fvo9ZzZ&v^S literal 0 HcmV?d00001 diff --git a/druid-spring-boot-starter/target/test-classes/com/alibaba/druid/spring/boot/demo/model/User.class b/druid-spring-boot-starter/target/test-classes/com/alibaba/druid/spring/boot/demo/model/User.class new file mode 100644 index 0000000000000000000000000000000000000000..c5016bc432dd1710f4b9a96ac0700cb82092ad55 GIT binary patch literal 1458 zcmb7DYikoh6g`u7V){y7_MxqP*z}RETHmpST3ZQ(3N}Xiag!b5lw>#TZp0$~Ck0JG z!5`p{67Stzo1~@%3EbIx=iD>ro|*jm{rx9^E#y-ezj`MQ-r;aJ zfqT4eakwAHgE$@vgp?sLTs+a=>snnmYg*AVYk7gG*Dcdk4Ov!>s?_DKXGR;`An*HuNY=$c`-l%Y9IK0vEjma7@EVQCE_u4```Y11&{*?+b0@zI)e z3*>AjyV?Z^yp1~k=4f}bx5uqm?#f^Es zknI)DpQf>bWr5s(Sx9fMbLOkciLAN;F}>N8Cb^gEHYk|C+s_`6bQ?W*pDlkCem1*z z`8ICRKWTveULpFCJs_==jZij1YliYsi7|{*fh?p_oJ!;<#c9g6Xce?Z*Ulim&_@U} z6jQW<*doL>OJ8Xpgd4a?857J=WP$@iGB(8oYwO<->aYwVOgkB38AXyrFw=yO4w(2P zmc=6GX%?ST^KusT72(g+nr5;xidXNx?J&vERv9=ON9J&gq~_3e=a(sqpCe}ur-Dx9{ nN&4R*T83BJNDY6Y(8jfkg0o$MbHUspWIcaZy=TJ?uK|AmUfmx} literal 0 HcmV?d00001 diff --git a/druid-spring-boot-starter/target/test-classes/com/alibaba/druid/spring/boot/demo/service/UserService.class b/druid-spring-boot-starter/target/test-classes/com/alibaba/druid/spring/boot/demo/service/UserService.class new file mode 100644 index 0000000000000000000000000000000000000000..357147f9e0a6c9ab0114121232cbda2800bb7fb8 GIT binary patch literal 233 zcma)%Jqp4=5QX2wm_#d&p^aMzHmS4_gn&ix0Q+aykYr`^176L-19&KLBZ95XFudXW zc=LSS9{@I(#fW1hgydoxwZ9z|VYkdmK5$m?reK+EigcApTQgo6!3Af^^+vJw>Wse& zYdfZNZCP!VuGqQNE+x!!+dHWbrqYDP80OjyM(XvbCT#x@dT1m*$}jC*ziKB@YS~2u SLg1ePC?re}jvJJ9bFaZN{uWE#BLa032e{lK;5a83o2ZY zj3zLcGeucil%cl!=3y*)tQmf`lWJJViY}^pMft`$TdtItLVQUF{@iNT7s#Y?Pvna9 zN|K$(nP7Qlq!a8ilP=Yf3Fl}64g8723gl9x!h4~qs4&v1npcs4(EPFj+wzetKD{j~ z&B_w<&x@*3Z?B8X0*Sn-g++Bs+g|LlQ)#PV+~zEh+Hwk22300ntthYQGLys*b|Qg?l#F?wqCGVgA{k&ZTrr;VLbJ(%S=>DP+XDAnE>S*fUiEK9f3wK0a@Jbs%D9S@|k?SOy& zjz^|(M2e;UHYC8%Rsrp`t;!WvajN}yGu?Ka<`Ita9qWgK?HB+rjAbJAPQG+K)Vrv= zs7X@FJ=}TJg1UQj9pW7q4)#)7W1tWFD3c8X?8h*7EENYSt@9kM9qRtk_i)a9K$nBh zh`r@WJIana%I=0`6NNrFgu}!UIKpI{I^Ih@u@-MCHak4vzed{PZXot(1Kp3-(KG0- zAwIl@-ZdoF(f0vK2M=Ef@#g1On|fD0^+7(-AY`17W7LxjZ_BVj989o7#~9SU{EdQ+ ebKMK)I~?(i?Kr`0j0PuZe2Qxar#IV|0)7FaL!k-) literal 0 HcmV?d00001 diff --git a/druid-spring-boot-starter/target/test-classes/com/alibaba/druid/spring/boot/demo/web/UserController.class b/druid-spring-boot-starter/target/test-classes/com/alibaba/druid/spring/boot/demo/web/UserController.class new file mode 100644 index 0000000000000000000000000000000000000000..c14372d6f9ad4af737d032378fee5a29621b8020 GIT binary patch literal 1070 zcmb7DU279T6g{)~YLnR3RIBx?_CshZI1geKB1$X>Le$b~UVNI}oupHDcjD}9LJ|Ly zf*|_f5Aa8cch=ZgjSwI9UheF@=iYnH%(w4fz5=+78&#BWbrwZjt6>G#D_E^yjiHvM z(i})LP=RE)*A8^dMWlS;3m%$Gg*@#WmGro;wdJ9VHKziX&0mfyn+(hQSz=WzJ1SLv zBwIM#^{bx3p0w^bsaWw9^K3qjo&8f_hjs3VMW@#wH<4;8h)JIz)@>E|2m>ckoyMbc3B zVx&^b(AsPtiGkpeAR^j2={2{efsAR^CN)iv<`d1@ol9!CCJW1K_)fb6ZY^ItJJc3pfeN5$I5ZO z=x)H6uUn3z|63@v2wm*S=$bX+9>ykkUbGgkE zFpmX_7|x=BLSFokz&tvuZGVJ!^D_z_-c#sd4AICTmVTy05dQ Ymf`{~(pkj~wVXp;%I)Qo6|Mk302uuv$p8QV literal 0 HcmV?d00001 diff --git a/druid-spring-boot-starter/target/test-classes/config-template.properties b/druid-spring-boot-starter/target/test-classes/config-template.properties new file mode 100644 index 0000000000..82c1c1f0ea --- /dev/null +++ b/druid-spring-boot-starter/target/test-classes/config-template.properties @@ -0,0 +1,42 @@ +######Druid数据源配置###### +# JDBC配置 +spring.datasource.url= #别名为spring.datasource.druid.url +spring.datasource.username= #别名为spring.datasource.druid.username +spring.datasource.password= #别名为spring.datasource.druid.password +spring.datasource.driver-class-name= #别名为spring.datasource.druid.driver-class-name,非必填项可通过url解析 +# 连接池配置下面配置说明请参考Druid Github Wiki,配置_DruidDataSource参考配置 +spring.datasource.druid.initialSize= +spring.datasource.druid.minIdle= +spring.datasource.druid.maxActive= +spring.datasource.druid.maxWait= +spring.datasource.druid.timeBetweenEvictionRunsMillis= +spring.datasource.druid.minEvictableIdleTimeMillis= +spring.datasource.druid.validationQuery= +spring.datasource.druid.testWhileIdle= +spring.datasource.druid.testOnBorrow= +spring.datasource.druid.testOnReturn= +spring.datasource.druid.poolPreparedStatements= +spring.datasource.druid.maxPoolPreparedStatementPerConnectionSize= +spring.datasource.druid.filters= #默认值stat,配置多个英文逗号分隔 + +######Druid监控配置###### +#下面配置说明请参考Druid Github Wiki,配置_配置WebStatFilter +spring.datasource.druid.WebStatFilter.enabled= #是否启用StatFilter默认值true +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= +#下面配置说明请参考Druid Github Wiki,配置_StatViewServlet配置 +spring.datasource.druid.StatViewServlet.enabled= #是否启用StatViewServlet默认值true +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 diff --git a/src/main/resources/META-INF/spring.factories b/src/main/resources/META-INF/spring.factories deleted file mode 100644 index 11bd1b66cc..0000000000 --- a/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,2 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ -com.alibaba.druid.support.spring.boot.autoconfigure.DruidDataSourceAutoConfigure \ No newline at end of file diff --git a/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/Application.java b/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/Application.java deleted file mode 100644 index 29e25aa9bf..0000000000 --- a/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/Application.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.alibaba.druid.spring.boot.autoconfigure; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -/** - * @author lihengming<89921218@qq.com> - * - *

druid-spring-boot-autoconfigure 测试例子

- *

1.按需配置application.properties,配置项请参考

- *

2.run Application

- *

3.访问http://127.0.0.1:8080/druid

- *

4.访问/user/{id}接口,查看监控效果,如:http://127.0.0.1:8080/user/1

- * - */ -@SpringBootApplication -public class Application { - public static void main(String[] args) { - SpringApplication.run(Application.class, args); - } -} diff --git a/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/service/UserService.java b/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/service/UserService.java deleted file mode 100644 index da12cd6f6b..0000000000 --- a/src/test/java/com/alibaba/druid/spring/boot/autoconfigure/service/UserService.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.alibaba.druid.spring.boot.autoconfigure.service; - - -import com.alibaba.druid.spring.boot.autoconfigure.model.User; - -public interface UserService { - User findById(Long id); -} diff --git a/src/test/resources/config/application.properties b/src/test/resources/config/application.properties deleted file mode 100644 index f506bbea1c..0000000000 --- a/src/test/resources/config/application.properties +++ /dev/null @@ -1,19 +0,0 @@ -# 数据源基础配置 -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.StatViewServlet.enabled=true -#启用Web关联监控配置 -spring.datasource.druid.WebStatFilter.enabled=true -#启用Spring关联监控配置 -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 - From 365af8688e93acc7a6cc13efb4a0bcc93b5408f7 Mon Sep 17 00:00:00 2001 From: lihengming <89921218@qq.com> Date: Tue, 16 May 2017 14:18:34 +0800 Subject: [PATCH 20/21] add > .gitignore --- druid-spring-boot-starter/.gitignore | 25 +++++++++++ .../spring-configuration-metadata.json | 35 --------------- .../target/classes/META-INF/spring.factories | 2 - .../DruidDataSourceAutoConfigure.class | Bin 2788 -> 0 bytes .../DruidDataSourceBuilder.class | Bin 2294 -> 0 bytes .../DruidSpringAopConfiguration.class | Bin 1913 -> 0 bytes .../DruidStatProperties$StatFilter.class | Bin 2087 -> 0 bytes .../DruidStatProperties$StatViewServlet.class | Bin 1776 -> 0 bytes .../autoconfigure/DruidStatProperties.class | Bin 1984 -> 0 bytes .../DruidStatViewServletConfiguration.class | Bin 2437 -> 0 bytes .../DruidWebStatFilterConfiguration.class | Bin 2739 -> 0 bytes .../test-classes/application.properties | 13 ------ .../spring/boot/demo/DemoApplication.class | Bin 740 -> 0 bytes .../druid/spring/boot/demo/dao/UserDao.class | Bin 350 -> 0 bytes .../druid/spring/boot/demo/model/User.class | Bin 1458 -> 0 bytes .../boot/demo/service/UserService.class | Bin 233 -> 0 bytes .../boot/demo/service/UserServiceImpl.class | Bin 1591 -> 0 bytes .../spring/boot/demo/web/UserController.class | Bin 1070 -> 0 bytes .../test-classes/config-template.properties | 42 ------------------ 19 files changed, 25 insertions(+), 92 deletions(-) create mode 100644 druid-spring-boot-starter/.gitignore delete mode 100644 druid-spring-boot-starter/target/classes/META-INF/spring-configuration-metadata.json delete mode 100644 druid-spring-boot-starter/target/classes/META-INF/spring.factories delete mode 100644 druid-spring-boot-starter/target/classes/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.class delete mode 100644 druid-spring-boot-starter/target/classes/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceBuilder.class delete mode 100644 druid-spring-boot-starter/target/classes/com/alibaba/druid/spring/boot/autoconfigure/DruidSpringAopConfiguration.class delete mode 100644 druid-spring-boot-starter/target/classes/com/alibaba/druid/spring/boot/autoconfigure/DruidStatProperties$StatFilter.class delete mode 100644 druid-spring-boot-starter/target/classes/com/alibaba/druid/spring/boot/autoconfigure/DruidStatProperties$StatViewServlet.class delete mode 100644 druid-spring-boot-starter/target/classes/com/alibaba/druid/spring/boot/autoconfigure/DruidStatProperties.class delete mode 100644 druid-spring-boot-starter/target/classes/com/alibaba/druid/spring/boot/autoconfigure/DruidStatViewServletConfiguration.class delete mode 100644 druid-spring-boot-starter/target/classes/com/alibaba/druid/spring/boot/autoconfigure/DruidWebStatFilterConfiguration.class delete mode 100644 druid-spring-boot-starter/target/test-classes/application.properties delete mode 100644 druid-spring-boot-starter/target/test-classes/com/alibaba/druid/spring/boot/demo/DemoApplication.class delete mode 100644 druid-spring-boot-starter/target/test-classes/com/alibaba/druid/spring/boot/demo/dao/UserDao.class delete mode 100644 druid-spring-boot-starter/target/test-classes/com/alibaba/druid/spring/boot/demo/model/User.class delete mode 100644 druid-spring-boot-starter/target/test-classes/com/alibaba/druid/spring/boot/demo/service/UserService.class delete mode 100644 druid-spring-boot-starter/target/test-classes/com/alibaba/druid/spring/boot/demo/service/UserServiceImpl.class delete mode 100644 druid-spring-boot-starter/target/test-classes/com/alibaba/druid/spring/boot/demo/web/UserController.class delete mode 100644 druid-spring-boot-starter/target/test-classes/config-template.properties diff --git a/druid-spring-boot-starter/.gitignore b/druid-spring-boot-starter/.gitignore new file mode 100644 index 0000000000..f3340860d1 --- /dev/null +++ b/druid-spring-boot-starter/.gitignore @@ -0,0 +1,25 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +*.db + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +nbproject/private/ +build/ +nbbuild/ +dist/ +nbdist/ +.nb-gradle/ \ No newline at end of file diff --git a/druid-spring-boot-starter/target/classes/META-INF/spring-configuration-metadata.json b/druid-spring-boot-starter/target/classes/META-INF/spring-configuration-metadata.json deleted file mode 100644 index f90d6c2cf8..0000000000 --- a/druid-spring-boot-starter/target/classes/META-INF/spring-configuration-metadata.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "hints": [], - "groups": [ - { - "sourceType": "com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure", - "name": "spring.datasource.druid", - "sourceMethod": "dataSource(org.springframework.core.env.Environment)", - "type": "javax.sql.DataSource" - }, - { - "sourceType": "com.alibaba.druid.spring.boot.autoconfigure.DruidStatProperties", - "name": "spring.datasource.druid", - "type": "com.alibaba.druid.spring.boot.autoconfigure.DruidStatProperties" - }, - { - "sourceType": "com.alibaba.druid.spring.boot.autoconfigure.DruidStatProperties", - "name": "spring.datasource.druid.stat-filter", - "sourceMethod": "getStatFilter()", - "type": "com.alibaba.druid.spring.boot.autoconfigure.DruidStatProperties$StatFilter" - }, - { - "sourceType": "com.alibaba.druid.spring.boot.autoconfigure.DruidStatProperties", - "name": "spring.datasource.druid.stat-view-servlet", - "sourceMethod": "getStatViewServlet()", - "type": "com.alibaba.druid.spring.boot.autoconfigure.DruidStatProperties$StatViewServlet" - } - ], - "properties": [ - { - "sourceType": "com.alibaba.druid.spring.boot.autoconfigure.DruidStatProperties", - "name": "spring.datasource.druid.aop-patterns", - "type": "java.lang.String[]" - } - ] -} \ No newline at end of file diff --git a/druid-spring-boot-starter/target/classes/META-INF/spring.factories b/druid-spring-boot-starter/target/classes/META-INF/spring.factories deleted file mode 100644 index a2c21bc315..0000000000 --- a/druid-spring-boot-starter/target/classes/META-INF/spring.factories +++ /dev/null @@ -1,2 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ -com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure \ No newline at end of file diff --git a/druid-spring-boot-starter/target/classes/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.class b/druid-spring-boot-starter/target/classes/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.class deleted file mode 100644 index 85f15c8d37dc3c5b57868c39df1b85dd2dff113f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2788 zcmb_eTUQfT6#j+)Ny8`*rB>*T+R^|?hKf=x77aH=!$pJGYHuf#0}f1P!psEeU+Ev{ zYx{z2ANtz0`kT7C`kl!Di3y6XX04pd-ury}a`xV5{{HumKLJdln#4s+CvgK`s$nLH zo4A!gz6Z0IQ=54;EF`d~=G$txlfaUi@2cTm0tGcMC$N&hY7%R>pTGk}D#o#%#M^in z$3`5FG<4sv94na75KE74Xy}}C%Thyc!E)qEtx}TSx+vMCqzbMn>Hj zr!^$YM=TAq>4NKRMPQqrsK{row_}(taip_nEI50X=QU0UZL@1cKT`~Zxw9;)VZ`G2it*QQ z@j=ZAtcu*Qe2dY{JB}L&WeDRSywHB7Ztf9PXFV48e+I`}}OpvdhxrgJybC1dQ8adi3?vsRfXE-c?fAd?VTdwsVDt zdbVWnFv=(m=XvxvFvUQ?4LjosQTZj$GQ1_WAa<|63WD4QM7M&lS^1!vYCC+@(cPK z+7JB=?Tm$5rjDQcmpaqwIlHR_NILDb!_3W|yXQRTIp;k0F2Dcz>k9y5sOoqdlNv7T zNMW)I9hlNEtl3Q%<1UCd=_IG7P9z+t;H;^WpSM!Kh5Gs zH*TWD%aV>|+~Vano1ba8BcL}tx1qeiR=z-QX+u7dW*FFxxg;A?0$pXhR+mBODS`3* zZ>M9^k@cEc4m`VFn>xHRLl~XYcHItU1k(AD6@kpWTP3vKl3iEJ;ijd$yV7!KCs%SS z(piz7&33Yx3D#|5wot0Lo2GPZOIp&bdZAr4{RSsBE!Pc983t~}t*_ZNqG~Si`vn=u zvKx98H5b}WRe4OM;wc$WuEqSw|AW|JF}OgXC1AsKor7$MhF*QmO(5TbNSnBfW!EWJ z@gIk9zdJqUhfW}HzT|qfq-$%Q+*D6p@3CnqS@+GQFyN-&j>WLGBArnA#Pryv+_Ka) z6)br66Xnf2()X7sl!h644$mx7OtT0Cx~qH60zKtGRvwd_l8Nf^P!?^T`H9w}I>)F6 z-oq(@{yj}zm;O2d890e|1m^y`Bm{;JgS2YCfeScg;2cZ=^Ix`+>nOJiWAXA-%{$7G z->68nb7U)z!|n?79c-|Gwo$bz_dLhIJ$8q6>AXH@ z_DODsM~AgC(pr-3n?jO2n{OQy>G*(vnQqUXen>l{PP!)oY1jRmYO75#4@urNMfDFi zm+`99rZSQ(fzg(l;5v9#Cf`Mt^i_O{h{KxaZr+HeNJ4JTk~HgYI@1D?+L9x}hYslg z-AV`bL%!)oNX1Pwr%ftp@@`))3A2MfR)C;S6&*$TeV42hhG<{#sipNa?aUxePe5N` z2cocx)ank>KO^%~#9-evM;{X4)h`irlP&^UzzSVTDzr2lH?nq({ur<1k z!M*yA6ATE{z=zbs^OWWStz)=Ie@ta4PLfcebmYfWnC?mP@yhm1bQi8Ssr!F1H4nBXN0V1oZYp$1}*Jc z`c71;5{XDW01s7hXT8C}T9872?9Sbpx#ynyx$pmb`wqYjEP6PKdI_^03T~bA@Dmyy zDrkBrf|qd3LmBnMv~%4_^CjFU;U>d$Wc23N6JZ9@E(Icv8Q3$1Gmn$ds&&~>vFZl0 z6^7aht8_@`H{03_cpMoO4*Eu{%U9a`#k*33G4BiCYO}?~M+M#yK_V9!4sAGr;mXYG zp>9*?sF|8?*wlW*cLWytB8cVR43l?MsO(*aiCVqGP+ZbIQa{#KpR3xh zOWA(vH#smVdK=0ogXe1XGz7$71c4HvFFDD)m7dehMs9@2j+L8aa}=BV6g0YDa>%hZ z487V{5T?wm8XZYvm5djM+{V+h$B(R#L65?o-Dhb1Z<7qCGY?u6PvWwG-nof)_e^aiME_|T^nlHtMVE8@P zd`>Y@x_ipC45vaGN+Ng^W|`U|PiC?{=m{(0ltnYGP}dlZNLVXP7+3HOPBJXy)Nv9; z+St8%j;Rc?3MT0x)f%}Kr8!v4YgiYtID>dB2XZs|Q`#50x2jcW{bVl#CH!2$E&Ni! z_xQn)`IX_1&*2?B0~Ji+SOvGS!0;f)$Fvy_*sCO z6phH1j#jh8Fr2K_pSMSr)~uU|l-K!M&i0okh8u4uV(GegY!(-5&*~jqq_KUJ20f$c zPT`_;n!b+EdYqnWj1x5EnJW}}pQ0m9E2H($><-vJBouI(-jnI(d3;N9Wq1K+@Ev_I zmtDH$l;>%6%H>@Yp6+1c4axiUFYnVYXZnthLqAI^4M?2Nu$GBff%c|%QG7bLO@y{F zxr5R;=4^_2YIrxpBrRMZ--q6g&@bV~41I-GhhE)9nV24K&&~b|ZyQJEM)*^hpc|b2 odDjT<`aV0=%uX2|E@5WOP63xmuYfCQtf%PoDm~TbU@>YR0N>Ri8UO$Q diff --git a/druid-spring-boot-starter/target/classes/com/alibaba/druid/spring/boot/autoconfigure/DruidStatProperties$StatFilter.class b/druid-spring-boot-starter/target/classes/com/alibaba/druid/spring/boot/autoconfigure/DruidStatProperties$StatFilter.class deleted file mode 100644 index 4e4a7710d688c3fe3b1cffa06e70b97185b23a30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2087 zcmb`G%}-N75Wr_kKj`yS3Y3E1qNoLwr{cE;4;2$lMUpD_?PIBnkGIYHFnG|!gC-s{ z@t}zZO+0AgL8FPr#DjkTf0S|Nwb1stJ?Uj;cXnp?H#0jMzkmJ$fLXX;fB`dE$bv=U zIEfP^PLh}w)z z(NhiK1ycAE?aQ%5xw;5$chs>^n$%S?=Xbk}l>YXjbm_YJj-pds=e~&Nt)db}yAMTl z)E*SNBR0!i==R?08SbdP>$fvLd{U8rhWkX8o3owrX!<* zQCyo%2N;80xMQ#z_Mq$z{sxIJvEcjK;JvV~6+DOJ33_U3`a2}rPaBc-0i@tzbVIS} z)q0-LC~uudENtr zI!_=IT98y62F$M6{4L96&-&VuH(NxAHoT_*Wo- zkT~!I_)&}Wl6zjzXOL(M|09Ef7j&e*A7TLSisSt* z55s<-+6;0^ghD^|dDFww)I;e@z0M$Bt~BtD&7h6e*_!ml^Io?p)ZW0aR0~?%Yj7oL zKQt!vdl{m4U31-#qF)#4$P=1D{;BT^wdr9}fetTft)T02Pd0gzyKU8zZ8tn5e76|{ z+T}eRv;zN~?DUjyx9FU%+*QG$P+E#`*~oxZ7dk@kkF{p5T(LE$fVGah&6of7qQcX7 z-J?Mt(-<;bI%wUBy6T{DuqvXhHre7L9-5|OuTkUwc#TXm==E~^IcD&t2}8CX^i)f1 zOM0wDOKVnXBJywoN_ogaE)RJU1rjqPW=Rww=fGVCJOB9|7!*eXxzjulEqwfqe@p^P zIR6>^C@F|hNw|tpRguQRB8|008q13`R*1R)j5>kxB<@_)40W>l4cO<%Z4PBBGTw)I zT;~T4umGoV$KVW{ML8M#1!A9!;0rK+xch1e){HnMI)61Jin76x9! z^n^zB67>ZuNZbT@Vg}LEc(HuG&FTCP)iG+EYMi<_YAQ6~r+? mI#!VDb`Zw|`G6qa6cGA!3`e*eeUAz(qRyfv4Y%PGWPStO6eaTj diff --git a/druid-spring-boot-starter/target/classes/com/alibaba/druid/spring/boot/autoconfigure/DruidStatProperties.class b/druid-spring-boot-starter/target/classes/com/alibaba/druid/spring/boot/autoconfigure/DruidStatProperties.class deleted file mode 100644 index b927e543519d99587ef847b1460831fdbfd73241..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1984 zcmb_dT~8B16g^W~3d>Tk$d{;yptME0D)^+q5Y$9d0WE1_e44gH9o+6VyR+cW(nLa{ zi9f&}WxTVyK(nq-^kH{q@7{avxp(Hw{QmRf7k~{sF<@XlkE($T)<-c4E02c;a?!^l zZF!u>Mjo3CMqP3BO4>?z4CZUc5#El?eP8$t6Z&66ij%tVj%}eB#<<(t=Zc&i`akut zcEpdlWpk%v)s-im&Qpr=lTq(#Ew^iNTQ+%yzjX^;VCKnl>`yWV(2XAylVqV5TOzF@H6R1wZ$-0DmNIiJ8oN0T{Y>5-JshP z-T`mgWGU9%7PlMRllnV0X4NN2z1hAhCE`)&2({hc@aa-HwdDmr;W$%D@zb>w2{O@4 zhI*-dRkkTBR3uXWq&g@KJd-YKJTB{eL+lQyqKhpt9v5?-U~e#W#Q3@dqwWS?OOSRHrjZ(V{QjTV>VK0wapdxLweOvy(X?>nqhCivNkb^YYcA&0ULGJL=jUa z3YcJcennV@$;;DjuX!X|3QKg98g%Fm(Md~5XqM46gd=69F%PDjMeiBmziY!fYG#x%g{#zJ4OYZ_X19QmY20<^-3^1c`%##f?U%<^6+M-cI=PKVZ z@|7kTXprI1xY!q*y9mC8+i~y~d1thDW$hFrmlX630xZ+ju@WN8L|!q1M%PvA#EZBS zWAzisCW)-35?R9CG$Pp~ku@Un;6Frk+clA8q8c^3pGZDQ#7ZS{5BJlE^esx%kqsiU p`5z*B-RbJUYPbd^lxZ9zONE{_pZJ?(C{iPHw0Xwp$s`^Lz+P)B}QTv#O{-~yB)@~rKrAnY$XlLfk&b{Z}IrlDq{`K1*0H&~=!Z5C< zFpC=&K1m^l>lWrxNEk4Nn-=C%xPpZwZkhFMv-mWLJ7%$H7M~??*NnL&mdv=E#EKbL zlelML%|c$Fd&c!#Ju47Pj}-*s^L|+g^yOSnEjMaK6|Bo*mB>KOFUe{_2CiARz_{LV zLxGiC$*(!G>K0{DI_03@mYuL3xL(C6`o4B#L;EG)+jc9BKsgI$Kd+@OxN0x2g59dp z^Q~Q}UEiA)I2$(cHC1s#9YpX=B|U-f(?@f*8u)b;Xjg^PV>v&lv&m*G`LCI|Z^!)n6JDm^(HfUP3cF7S@^iw$upNi=L-~`Kk;<#cba@uEWc19vG1w z97?pn>~S;HOBba_OR^pbCDPgkqoa&16sTK)b88JxyERpCLzjY@^E{uD;O#TQOh@<3 zkyekXrkAfeMiS;e@_r*IsoSm*>ga#!EBjFHN`X5ay>t*P9hY50&7n-2Gg)2nT8er? z0&$Nj5@=~ETb5de5v6QY4B57XXO(A)s4UR4BX?OQ1zBzId|U@+I9Zdrw6nOqj)DcU9qP4Fuls>^cC@ZLZG3HP;=Vw?$(vJ^EbF{B)oo)7 z4+N5}k{`G6CBCxpwE+{dTJ`sAd;@8tXpneWc~5MV%)GbiS6pv{rDif`qkI6aQsykk zvJGXxooNgA9pTH{zt3Kn2naXSu`rI|Tis zK2{;$T077l-o#mcj?J$NY+o4R^E_7$N5L^M{uJWZX!|ujyCd*CUgz9yzJLq3$d$kw zG}dJfi*-wgBq|GKgE4w2-lowP=hh$HLqE6EAr7)y>4griE)m{ruq_ uS~B^c;uyobe0Jfz2puN+KCutBAVPeIk3xnseIGNp%C}P7y~4OhapG?e0>Kyn diff --git a/druid-spring-boot-starter/target/classes/com/alibaba/druid/spring/boot/autoconfigure/DruidWebStatFilterConfiguration.class b/druid-spring-boot-starter/target/classes/com/alibaba/druid/spring/boot/autoconfigure/DruidWebStatFilterConfiguration.class deleted file mode 100644 index a5289d1be501bd8955188ff80b4c099bc5d6136c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2739 zcmbtW-*XdH6#j0Lbkneb{<44|pjJtLBrAfTlpmJTN+Bt=Ek!`lo8&g#cDtL|-IV&q zi{qO!KIxk?jx)aMOPP_;8DDttkFtJuH}q%F!RF!K-0$o?=ey^8_w4@l_iujyIE#7) z$1s+`b&MOB$RL3+10Q9O(qIBN3`}N_!_72q>2)!Ul3q`xaa*sa_2T0+X7oIp#+;t- zq%p7OyJ>u)=X+_~H}Jr~rvmMlY}XF22qba?^8(2+uc`zN6>V2dHCD>XpOa;WNO#ez zNM~O9wq7^EWVmPt0;OWbTd|~Lmt|R6Rli|Zt)TAPZp|utUTDci=v6#-!LBuYWnI_y zyQ(}J%5cJVLgkM&Z8EeycSN9XA%bUA%??68La!<53Ovred?X!a+V|?p4{a5U3=}=T z)?~Nf%N6y=^Os|qk5t(Tl)vhz(29xeW9iCaw1?(x-N6$ z$RJQma&f=0`nR0(9G(82>|WkyYTDzn2^3mUZPe?YA6koHShsdmpJcM6R#`5|dZepJ znh%)}UI1#}z~>abz|on88`>*s-VSU^aMX1@mX?ZPa`G*yGqa&uqy9D@wX}|O6=%JM zUs0?wrQQD@iYzS2RVi?zWsDXAXV|K(iCGkO{7*W!-KGe?WcZ{@;gNNGNeWdN${-?C zh%QfIM}7**)mN@6a9~lc@>0!9r@`IH(AU$!6&Y3*Cl^X~5YU)l7ZE0o<23^hO?&|| zAK8cG1%_K(?iUu*L>U#TOQ+0oBs;)ts2hQaDoD1?8Z@zh8Y`gIDo!KN#iOvfyV8MH{5J4bYf%4#IoMk#p|K{XnBuEsWRbcL(eutNv@4~ z)Q^c3ZR*wCsbbfqGaGN7VnIx}(Y8(7nCC6qDmHoAl;!28$W;k!n!rHD*J)&P;n#djBnU*16Dtuk^l1K}_2W7Ro^%%QHU#`Wuo;w`h)F~^(os)cB zPD}mfU=V@RF`w;PAK4pJJL}bH+AUQE-w8h#s=#3yrd!A~-m+=g5-IsbTee9Quj5sI zPv~D8gzgF)PjF>%7MxRqPauAc%qKavN8mA>;(s%KfG*zPO5jcO(+M|=KlwG1BKFhJ zI@(H4k+}B+$*HGEac;ku%pXmz!^kIpNBUl3cpV+jkkQl6NOfms*Kr`I1-5a^A8z6dx>pf3iFM8Hu3M+oG9AYJd+hdLP%A5+FlsjvuE3==cXUaSsOo diff --git a/druid-spring-boot-starter/target/test-classes/application.properties b/druid-spring-boot-starter/target/test-classes/application.properties deleted file mode 100644 index 0ca9a476fb..0000000000 --- a/druid-spring-boot-starter/target/test-classes/application.properties +++ /dev/null @@ -1,13 +0,0 @@ -# JDBC -spring.datasource.url=jdbc:h2:file:./demo-db -spring.datasource.username=sa -spring.datasource.password=sa -spring.datasource.driver-class-name=org.h2.Driver -#启用Spring关联监控配置 -spring.datasource.druid.aop-patterns=com.alibaba.druid.spring.boot.demo.service.* -#其他配置,参考config-template.properties - -# JPA -spring.jpa.show-sql= true -spring.jpa.hibernate.ddl-auto=create-drop - diff --git a/druid-spring-boot-starter/target/test-classes/com/alibaba/druid/spring/boot/demo/DemoApplication.class b/druid-spring-boot-starter/target/test-classes/com/alibaba/druid/spring/boot/demo/DemoApplication.class deleted file mode 100644 index 76ea0746c22ac82dfa7f1d660f75a2e5d596c929..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 740 zcmb7CJx?Ps5Pc4Tge80>ISvjQx{v}(fM|k{I1tt9kjN=lT;<)EVA!=I#|!)|DiFo} zfcsI1@g@>06bf9-Xl6Wb-W&V>>&rg?``8LlMzex%0oL%nf^~+uBc+u)W|(R1^cc#g zrY{+mL#5@fERCf7Euw@n_0Ys3=?SZRJV}<_wHh%Tgt1AvNK_;u!TUB-eLfmmr3XAR z#__&P4L>7uG8`r<7ET%6p;@U=nqjT=H@p#df+vC+y3Y4?axTIS2)!|-%n)=JBv4aWAD=SiYZ|v=uuE?B;jlNQY%u3$P zh5RHPMfNq!Vvb?&>%uG8sNn}T8CKp^Uqm-Db`0%LNsVa~DA0@9jMf*o3fmjwbf#=< zXR2P3>EwgsrxUsUZ3{Cf?aLi(qeMT)pAwjtPPRf3C(p>wwx7Tr^KzA}F9WNXCtDj| zK!62`<|$sJjBh^7!GLPL)PBaypZETNDnNs7H47M3EMb}QC9LFj6?O7{Rs(ng2(QEa diff --git a/druid-spring-boot-starter/target/test-classes/com/alibaba/druid/spring/boot/demo/dao/UserDao.class b/druid-spring-boot-starter/target/test-classes/com/alibaba/druid/spring/boot/demo/dao/UserDao.class deleted file mode 100644 index 4f05660704cb078733ff21bc7f85d22c745be6dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 350 zcmb7A%}T>S5dKzeV`~pSNeA>8@uGMN2rWLqB)cwKlT4XxEPVps$wMEY4^`X-5%E+H z^9M8E&+HGMI{>%1%5a%sl3{8vSq9&7?9~~36f1sbs=4*_T&`Rd^Fq{9x7N`5SLMcS zMBm7AWKy@5E=18SJ!o$iKjU3dNkd$Rl1nD5eX!pMREk8ht`Ta)x|&`(r};0^LRz2S z=LXZI^jf*6P$yZln=H8wCfOL3llh}2ySd4%y$ Fvo9ZzZ&v^S diff --git a/druid-spring-boot-starter/target/test-classes/com/alibaba/druid/spring/boot/demo/model/User.class b/druid-spring-boot-starter/target/test-classes/com/alibaba/druid/spring/boot/demo/model/User.class deleted file mode 100644 index c5016bc432dd1710f4b9a96ac0700cb82092ad55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1458 zcmb7DYikoh6g`u7V){y7_MxqP*z}RETHmpST3ZQ(3N}Xiag!b5lw>#TZp0$~Ck0JG z!5`p{67Stzo1~@%3EbIx=iD>ro|*jm{rx9^E#y-ezj`MQ-r;aJ zfqT4eakwAHgE$@vgp?sLTs+a=>snnmYg*AVYk7gG*Dcdk4Ov!>s?_DKXGR;`An*HuNY=$c`-l%Y9IK0vEjma7@EVQCE_u4```Y11&{*?+b0@zI)e z3*>AjyV?Z^yp1~k=4f}bx5uqm?#f^Es zknI)DpQf>bWr5s(Sx9fMbLOkciLAN;F}>N8Cb^gEHYk|C+s_`6bQ?W*pDlkCem1*z z`8ICRKWTveULpFCJs_==jZij1YliYsi7|{*fh?p_oJ!;<#c9g6Xce?Z*Ulim&_@U} z6jQW<*doL>OJ8Xpgd4a?857J=WP$@iGB(8oYwO<->aYwVOgkB38AXyrFw=yO4w(2P zmc=6GX%?ST^KusT72(g+nr5;xidXNx?J&vERv9=ON9J&gq~_3e=a(sqpCe}ur-Dx9{ nN&4R*T83BJNDY6Y(8jfkg0o$MbHUspWIcaZy=TJ?uK|AmUfmx} diff --git a/druid-spring-boot-starter/target/test-classes/com/alibaba/druid/spring/boot/demo/service/UserService.class b/druid-spring-boot-starter/target/test-classes/com/alibaba/druid/spring/boot/demo/service/UserService.class deleted file mode 100644 index 357147f9e0a6c9ab0114121232cbda2800bb7fb8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 233 zcma)%Jqp4=5QX2wm_#d&p^aMzHmS4_gn&ix0Q+aykYr`^176L-19&KLBZ95XFudXW zc=LSS9{@I(#fW1hgydoxwZ9z|VYkdmK5$m?reK+EigcApTQgo6!3Af^^+vJw>Wse& zYdfZNZCP!VuGqQNE+x!!+dHWbrqYDP80OjyM(XvbCT#x@dT1m*$}jC*ziKB@YS~2u SLg1ePC?re}jvJJ9bFaZN{uWE#BLa032e{lK;5a83o2ZY zj3zLcGeucil%cl!=3y*)tQmf`lWJJViY}^pMft`$TdtItLVQUF{@iNT7s#Y?Pvna9 zN|K$(nP7Qlq!a8ilP=Yf3Fl}64g8723gl9x!h4~qs4&v1npcs4(EPFj+wzetKD{j~ z&B_w<&x@*3Z?B8X0*Sn-g++Bs+g|LlQ)#PV+~zEh+Hwk22300ntthYQGLys*b|Qg?l#F?wqCGVgA{k&ZTrr;VLbJ(%S=>DP+XDAnE>S*fUiEK9f3wK0a@Jbs%D9S@|k?SOy& zjz^|(M2e;UHYC8%Rsrp`t;!WvajN}yGu?Ka<`Ita9qWgK?HB+rjAbJAPQG+K)Vrv= zs7X@FJ=}TJg1UQj9pW7q4)#)7W1tWFD3c8X?8h*7EENYSt@9kM9qRtk_i)a9K$nBh zh`r@WJIana%I=0`6NNrFgu}!UIKpI{I^Ih@u@-MCHak4vzed{PZXot(1Kp3-(KG0- zAwIl@-ZdoF(f0vK2M=Ef@#g1On|fD0^+7(-AY`17W7LxjZ_BVj989o7#~9SU{EdQ+ ebKMK)I~?(i?Kr`0j0PuZe2Qxar#IV|0)7FaL!k-) diff --git a/druid-spring-boot-starter/target/test-classes/com/alibaba/druid/spring/boot/demo/web/UserController.class b/druid-spring-boot-starter/target/test-classes/com/alibaba/druid/spring/boot/demo/web/UserController.class deleted file mode 100644 index c14372d6f9ad4af737d032378fee5a29621b8020..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1070 zcmb7DU279T6g{)~YLnR3RIBx?_CshZI1geKB1$X>Le$b~UVNI}oupHDcjD}9LJ|Ly zf*|_f5Aa8cch=ZgjSwI9UheF@=iYnH%(w4fz5=+78&#BWbrwZjt6>G#D_E^yjiHvM z(i})LP=RE)*A8^dMWlS;3m%$Gg*@#WmGro;wdJ9VHKziX&0mfyn+(hQSz=WzJ1SLv zBwIM#^{bx3p0w^bsaWw9^K3qjo&8f_hjs3VMW@#wH<4;8h)JIz)@>E|2m>ckoyMbc3B zVx&^b(AsPtiGkpeAR^j2={2{efsAR^CN)iv<`d1@ol9!CCJW1K_)fb6ZY^ItJJc3pfeN5$I5ZO z=x)H6uUn3z|63@v2wm*S=$bX+9>ykkUbGgkE zFpmX_7|x=BLSFokz&tvuZGVJ!^D_z_-c#sd4AICTmVTy05dQ Ymf`{~(pkj~wVXp;%I)Qo6|Mk302uuv$p8QV diff --git a/druid-spring-boot-starter/target/test-classes/config-template.properties b/druid-spring-boot-starter/target/test-classes/config-template.properties deleted file mode 100644 index 82c1c1f0ea..0000000000 --- a/druid-spring-boot-starter/target/test-classes/config-template.properties +++ /dev/null @@ -1,42 +0,0 @@ -######Druid数据源配置###### -# JDBC配置 -spring.datasource.url= #别名为spring.datasource.druid.url -spring.datasource.username= #别名为spring.datasource.druid.username -spring.datasource.password= #别名为spring.datasource.druid.password -spring.datasource.driver-class-name= #别名为spring.datasource.druid.driver-class-name,非必填项可通过url解析 -# 连接池配置下面配置说明请参考Druid Github Wiki,配置_DruidDataSource参考配置 -spring.datasource.druid.initialSize= -spring.datasource.druid.minIdle= -spring.datasource.druid.maxActive= -spring.datasource.druid.maxWait= -spring.datasource.druid.timeBetweenEvictionRunsMillis= -spring.datasource.druid.minEvictableIdleTimeMillis= -spring.datasource.druid.validationQuery= -spring.datasource.druid.testWhileIdle= -spring.datasource.druid.testOnBorrow= -spring.datasource.druid.testOnReturn= -spring.datasource.druid.poolPreparedStatements= -spring.datasource.druid.maxPoolPreparedStatementPerConnectionSize= -spring.datasource.druid.filters= #默认值stat,配置多个英文逗号分隔 - -######Druid监控配置###### -#下面配置说明请参考Druid Github Wiki,配置_配置WebStatFilter -spring.datasource.druid.WebStatFilter.enabled= #是否启用StatFilter默认值true -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= -#下面配置说明请参考Druid Github Wiki,配置_StatViewServlet配置 -spring.datasource.druid.StatViewServlet.enabled= #是否启用StatViewServlet默认值true -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 From 38fc66f72b4295b99595b257e5ac84dda8c4ca6c Mon Sep 17 00:00:00 2001 From: lihengming <89921218@qq.com> Date: Tue, 16 May 2017 14:58:08 +0800 Subject: [PATCH 21/21] add > README.md --- druid-spring-boot-starter/README.md | 109 ++++++++++++++++++++++------ 1 file changed, 87 insertions(+), 22 deletions(-) diff --git a/druid-spring-boot-starter/README.md b/druid-spring-boot-starter/README.md index 73fdc917ce..d511ab5578 100644 --- a/druid-spring-boot-starter/README.md +++ b/druid-spring-boot-starter/README.md @@ -1,35 +1,100 @@ -druid-spring-boot-start -======================= -Spring boot with druid support。 +# Druid Spring Boot Starter + +Spring Boot with Druid support,help you simplify Druid config in Spring Boot. ### 如何使用 在Spring Boot项目的pom.xml中添加以下依赖: ```xml - - com.alibaba.boot - druid-spring-boot-starter - 1.0.0-SNAPSHOT - + + com.alibaba + druid-spring-boot-starter + 1.0.29-SNAPSHOT + ``` -Druid的连接池配置采用Spring Boot标准的数据库连接池配置方式,配置按照标准设置即可。 +### 配置项 +Druid Spring Boot Starter 配置项参数名称完全遵照Druid,你可以通过自定义配置去覆盖默认值。 +```xml +# JDCB配置,参考Spring Boot文档该部分 +spring.datasource.url= +spring.datasource.username= +spring.datasource.password= +spring.datasource.driver-class-name= -```properties -spring.datasource.driver-class-name=com.mysql.jdbc.Driver -spring.datasource.url=jdbc:mysql://localhost:3306/druid -spring.datasource.username=root -spring.datasource.password=123456 - ``` +#连接池配置,说明请参考Druid Wiki,配置_DruidDataSource参考配置 +spring.datasource.druid.filters= #默认值为stat,配置多个请以英文逗号分隔,如stat,wall,log4j +spring.datasource.druid.initialSize= +spring.datasource.druid.minIdle= +spring.datasource.druid.maxActive= +spring.datasource.druid.maxWait= +spring.datasource.druid.timeBetweenEvictionRunsMillis= +spring.datasource.druid.minEvictableIdleTimeMillis= +spring.datasource.druid.validationQuery= +spring.datasource.druid.testWhileIdle= +spring.datasource.druid.testOnBorrow= +spring.datasource.druid.testOnReturn= +spring.datasource.druid.poolPreparedStatements= +spring.datasource.druid.maxPoolPreparedStatementPerConnectionSize= +... Druid Spring Boot Starter不仅限于对以上配置项的支持,DruidDataSource提供set方法的属性都可在此进行配置,但需自行检查。 -如果你想设置druid的具体参数,请参考 spring.datasource.druid.* 下的具体配置项。 +#WebStatFilter配置,说明请参考Druid Wiki,配置_配置WebStatFilter +spring.datasource.druid.WebStatFilter.enabled= #是否启用StatFilter默认值true +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= +#StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置 +spring.datasource.druid.StatViewServlet.enabled= #是否启用StatViewServlet默认值true +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= -### Todo +#Spring监控配置,说明请参考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 +``` +### 如何配置多数据源 +添加数据源配置 +```xml +spring.datasource.druid.one.url= +spring.datasource.druid.one.username= +spring.datasource.druid.one.password= +spring.datasource.druid.one.driver-class-name= +spring.datasource.druid.one.maxActive= +... -* stat view servlet调整到management port上,这样可以解决安全问题 -* stat拦截中未考虑SEO的情况,如果在SEO的情况下,会导致URL数量暴增,如aliexpress的商品详情URL +spring.datasource.druid.two.url= +spring.datasource.druid.two.username= +spring.datasource.druid.two.password= +spring.datasource.druid.two.driver-class-name= +spring.datasource.druid.two.maxActive= +... +``` +使用```DruidDataSourceBuilder```创建数据源 +```java + @Primary + @ConfigurationProperties("spring.datasource.druid.one") + @Bean + public DataSource dataSource(){ + return DruidDataSourceBuilder.create().build(); + } + @ConfigurationProperties("spring.datasource.druid.two") + @Bean + public DataSource dataSourceTwo(){ + return DruidDataSourceBuilder.create().build(); + } +``` -### 参考文档 +### 演示 +克隆项目,运行```test```包内的```DemoApplication```。 +### 参考 +[Druid Wiki](https://github.com/alibaba/druid/wiki/%E9%A6%96%E9%A1%B5) -* Spring Boot多数据源:http://docs.spring.io/spring-boot/docs/current/reference/html/howto-data-access.html -* Druid Wiki: https://github.com/alibaba/druid/wiki \ No newline at end of file +[Spring Boot Reference](http://docs.spring.io/spring-boot/docs/1.5.1.RELEASE/reference/html/) \ No newline at end of file