diff --git a/druid-spring-boot-starter/README.md b/druid-spring-boot-starter/README.md
index ee80e57fe7..72252fa88c 100644
--- a/druid-spring-boot-starter/README.md
+++ b/druid-spring-boot-starter/README.md
@@ -1,19 +1,32 @@
# Druid Spring Boot Starter
+[](https://maven-badges.herokuapp.com/maven-central/com.alibaba/druid-spring-boot-starter/)
-Spring Boot with Druid support,help you simplify Druid config in Spring Boot.
+## 中文 | [English](https://github.com/alibaba/druid/blob/master/druid-spring-boot-starter/README_EN.md)
+Druid Spring Boot Starter 用于帮助你在Spring Boot项目中轻松集成Druid数据库连接池和监控。
-### 如何使用
-在 Spring Boot 项目的```pom.xml```中添加以下依赖:
+## 如何使用
+在 Spring Boot 项目中加入```druid-spring-boot-starter```依赖即可。
+Maven
```xml
-
- com.alibaba
- druid-spring-boot-starter
- 1.1.1
-
+
+ com.alibaba
+ druid-spring-boot-starter
+ VERSION_CODE
+
```
-### 配置项
-Druid Spring Boot Starter 配置项参数名称完全遵照Druid,你可以通过自定义配置去覆盖默认值。
+Gradle
+```xml
+compile 'com.alibaba:druid-spring-boot-starter:VERSION_CODE'
+
+```
+注:请在 [这里][1] 选择一个发行版本号,或者在 [这里][2] 查看最新发行版本号,**替换 `VERSION_CODE`** ,例如 `1.1.1`。
+
+[1]: http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22com.alibaba%22%20AND%20a%3A%22druid-spring-boot-starter%22
+[2]: https://maven-badges.herokuapp.com/maven-central/com.alibaba/druid-spring-boot-starter/
+
+## 配置属性
+Druid Spring Boot Starter 配置属性的名称完全遵照Druid,你可以通过下面这些配置属性来配置Druid数据库连接池和监控,如果没有配置则使用默认值。
```xml
# JDBC配置
spring.datasource.druid.url= # 或spring.datasource.url=
@@ -62,7 +75,25 @@ spring.datasource.druid.stat-view-servlet.deny=
spring.datasource.druid.aop-patterns= # Spring监控AOP切入点,如x.y.z.service.*,配置多个英文逗号分隔
# 如果spring.datasource.druid.aop-patterns要代理的类没有定义interface请设置spring.aop.proxy-target-class=true
```
-### 如何配置多数据源
+注:配置文件的格式你可以选择```.properties```或```.yml```,效果是一样的。
+
+## 如何扩展配置
+如果自动配置提供的配置属性不能满足你的需要,你可以使用```DruidDataSourceBuilder```来创建```DruidDataSource```,然后进行一些自定义配置,像下面这样。
+```java
+@Bean
+public DataSource dataSource(Environment env){
+ DruidDataSource dataSource = DruidDataSourceBuilder
+ .create()
+ .build(env,"spring.datasource.druid.");//使用自定义前缀
+
+ //dataSource.setProxyFilters(filters);//添加自定义Filter
+ //...进行其他配置
+ return dataSource;
+}
+```
+注:[Issue #1800](https://github.com/alibaba/druid/issues/1800) 有一个自定义```WallConfig、Filter```的例子,可供参考。
+
+## 如何配置多数据源
1. 添加数据源相关配置
```xml
spring.datasource.druid.one.url=
@@ -96,9 +127,9 @@ public DataSource dataSourceTwo(Environment env){
}
```
-### 演示
+## 演示
克隆项目,运行```test```包内的```DemoApplication```。
-### 参考
+## 参考
[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/)
\ No newline at end of file
+[Spring Boot Reference](http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/)
\ No newline at end of file
diff --git a/druid-spring-boot-starter/README_EN.md b/druid-spring-boot-starter/README_EN.md
new file mode 100644
index 0000000000..f3a24f9588
--- /dev/null
+++ b/druid-spring-boot-starter/README_EN.md
@@ -0,0 +1,135 @@
+# Druid Spring Boot Starter
+[](https://maven-badges.herokuapp.com/maven-central/com.alibaba/druid-spring-boot-starter/)
+
+## English | [中文](https://github.com/alibaba/druid/blob/master/druid-spring-boot-starter/README.md)
+Spring Boot with Druid support,help you simplify Druid config in Spring Boot.
+
+## Usage
+Add the ```druid-spring-boot-starter``` dependency in Spring Boot project.
+
+Maven
+```xml
+
+ com.alibaba
+ druid-spring-boot-starter
+ VERSION_CODE
+
+```
+Gradle
+```xml
+compile 'com.alibaba:druid-spring-boot-starter:VERSION_CODE'
+
+```
+Note: Please select a release version name in [Here][1], or check the latest release version name in [Here][2], **replace ```VERSION_CODE```**, such as ```1.1.1``` .
+
+[1]: http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22com.alibaba%22%20AND%20a%3A%22druid-spring-boot-starter%22
+[2]: https://maven-badges.herokuapp.com/maven-central/com.alibaba/druid-spring-boot-starter/
+## Configuration Properties
+Druid Spring Boot Starter properties name in full compliance with Druid configuration, you can configure the Druid database connection pool and monitor the configuration properties through the following configuration properties, using default values if not configured.
+```xml
+# JDBC
+spring.datasource.druid.url= # or spring.datasource.url=
+spring.datasource.druid.username= # or spring.datasource.username=
+spring.datasource.druid.password= # or spring.datasource.password=
+spring.datasource.druid.driver-class-name= # or spring.datasource.driver-class-name=
+
+# Connection pool properties, detail see Druid Wiki
+spring.datasource.druid.initial-size=
+spring.datasource.druid.max-active=
+spring.datasource.druid.min-idle=
+spring.datasource.druid.max-wait=
+spring.datasource.druid.pool-prepared-statements=
+spring.datasource.druid.max-pool-prepared-statement-per-connection-size=
+spring.datasource.druid.max-open-prepared-statements= #Equivalent to the above 'max-pool-prepared-statement-per-connection-size'
+spring.datasource.druid.validation-query=
+spring.datasource.druid.validation-query-timeout=
+spring.datasource.druid.test-on-borrow=
+spring.datasource.druid.test-on-return=
+spring.datasource.druid.test-while-idle=
+spring.datasource.druid.time-between-eviction-runs-millis=
+spring.datasource.druid.min-evictable-idle-time-millis=
+spring.datasource.druid.max-evictable-idle-time-millis=
+spring.datasource.druid.filters= #Druid filters, default value stat, multiple separated by comma.
+
+# WebStatFilter properties, detail see Druid Wiki
+spring.datasource.druid.web-stat-filter.enabled= #Enable StatFilter, default value true.
+spring.datasource.druid.web-stat-filter.urlPattern=
+spring.datasource.druid.web-stat-filter.exclusions=
+spring.datasource.druid.web-stat-filter.sessionStatMaxCount=
+spring.datasource.druid.web-stat-filter.sessionStatEnable=
+spring.datasource.druid.web-stat-filter.principalSessionName=
+spring.datasource.druid.web-stat-filter.principalCookieName=
+spring.datasource.druid.web-stat-filter.profileEnable=
+
+# StatViewServlet properties, detail see Druid Wiki
+spring.datasource.druid.stat-view-servlet.enabled= #Enable StatViewServlet, default value true.
+spring.datasource.druid.stat-view-servlet.urlPattern=
+spring.datasource.druid.stat-view-servlet.resetEnable=
+spring.datasource.druid.stat-view-servlet.loginUsername=
+spring.datasource.druid.stat-view-servlet.loginPassword=
+spring.datasource.druid.stat-view-servlet.allow=
+spring.datasource.druid.stat-view-servlet.deny=
+
+# With Spring monitoring properties, detail see Druid Wiki
+spring.datasource.druid.aop-patterns= # Spring monitoring AOP point, such as x.y.z.service.*, multiple separated by comma.
+# If 'spring.datasource.druid.aop-patterns' to be the agent class does not define interface need set 'spring.aop.proxy-target-class = true' .
+```
+Note: The format of the configuration file you can choose ```.properties``` or``` .yml```, the effect is the same.
+## How to Extended Configuration
+If the configuration properties provided by the auto-configuration do not meet your needs, you can use ```DruidDataSourceBuilder``` to create ``` DruidDataSource```, and then do some custom configuration, as follows.
+
+```java
+@Bean
+public DataSource dataSource(Environment env){
+ DruidDataSource dataSource = DruidDataSourceBuilder
+ .create()
+ .build(env,"spring.datasource.druid.");//Use a custom prefix
+
+ //dataSource.setProxyFilters(filters);//Add a custom Filter
+ //...Other
+ return dataSource;
+}
+```
+Note: [Issue # 1800](https://github.com/alibaba/druid/issues/1800) has a custom ```WallConfig, Filter``` example for reference.
+
+## How to Configuration Multiple DataSource
+1. Add DataSource properties
+```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.max-active=
+...
+
+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.max-active=
+...
+```
+2. Use```DruidDataSourceBuilder```create DataSource
+```java
+@Bean
+@Primary
+public DataSource dataSourceOne(Environment env){
+ return DruidDataSourceBuilder
+ .create()
+ .build(env, "spring.datasource.druid.one.");
+}
+@Bean
+public DataSource dataSourceTwo(Environment env){
+ return DruidDataSourceBuilder
+ .create()
+ .build(env, "spring.datasource.druid.two.");
+}
+```
+
+## Samples
+Clone the project, run ```DemoApplication``` within the ```test``` package.
+
+## Reference
+- [Druid Wiki](https://github.com/alibaba/druid/wiki)
+
+- [Spring Boot Reference](http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/)
\ No newline at end of file
diff --git a/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.java b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.java
index 16322d86ff..a3405a9c29 100644
--- a/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.java
+++ b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.java
@@ -25,7 +25,6 @@ import org.springframework.context.annotation.Import;
import org.springframework.core.env.Environment;
import javax.sql.DataSource;
-import java.sql.SQLException;
/**
* @author lihengming [89921218@qq.com]
@@ -39,31 +38,25 @@ public class DruidDataSourceAutoConfigure {
@Bean
@ConditionalOnMissingBean
public DataSource dataSource(DruidDataSourceProperties properties, Environment env) {
+
+ //if not found prefix 'spring.datasource.druid' jdbc properties ,'spring.datasource' prefix jdbc properties will be used.
+ if (properties.getUsername() == null) {
+ properties.setUsername(env.getProperty("spring.datasource.username"));
+ }
+ if (properties.getPassword() == null) {
+ properties.setPassword(env.getProperty("spring.datasource.password"));
+ }
+ if (properties.getUrl() == null) {
+ properties.setUrl(env.getProperty("spring.datasource.url"));
+ }
+ if (properties.getDriverClassName() == null) {
+ properties.setDriverClassName(env.getProperty("spring.datasource.driver-class-name"));
+ }
+
DruidDataSource dataSource = DruidDataSourceBuilder
.create()
.build(properties);
- //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"));
- }
- 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"));
- }
- // set filters default value on StatViewServlet enabled.
- if (!"false".equals(env.getProperty("spring.datasource.druid.stat-view-servlet.enabled"))) {
- try {
- dataSource.setFilters("stat");
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
return dataSource;
}
}
diff --git a/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceProperties.java b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceProperties.java
index 070f524d7c..ba7d898d22 100644
--- a/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceProperties.java
+++ b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceProperties.java
@@ -45,7 +45,7 @@ public class DruidDataSourceProperties {
private Long maxEvictableIdleTimeMillis;
- private String filters;
+ private String filters = "stat";
public String getUrl() {
return url;
diff --git a/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidStatProperties.java b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidStatProperties.java
index dff025c749..aa3b31ecb0 100644
--- a/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidStatProperties.java
+++ b/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidStatProperties.java
@@ -52,7 +52,10 @@ public class DruidStatProperties {
}
public static class StatViewServlet {
- private boolean enabled;
+ /**
+ * Enable StatViewServlet.
+ */
+ private boolean enabled = true;
private String urlPattern;
private String allow;
private String deny;
@@ -118,7 +121,10 @@ public class DruidStatProperties {
}
public static class WebStatFilter {
- private boolean enabled;
+ /**
+ * Enable WebStatFilter.
+ */
+ private boolean enabled = true;
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/druid-spring-boot-starter/src/main/java/com/alibaba/druid/spring/boot/autoconfigure/DruidStatViewServletConfiguration.java
index d4232b47b7..d2d9c6178a 100644
--- 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
@@ -30,24 +30,24 @@ public class DruidStatViewServletConfiguration {
@Bean
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/*");
+ ServletRegistrationBean registrationBean = new ServletRegistrationBean();
+ registrationBean.setServlet(new StatViewServlet());
+ registrationBean.addUrlMappings(config.getUrlPattern() != null ? config.getUrlPattern() : "/druid/*");
if (config.getAllow() != null) {
- registration.addInitParameter("allow", config.getAllow());
+ registrationBean.addInitParameter("allow", config.getAllow());
}
if (config.getDeny() != null) {
- registration.addInitParameter("deny", config.getDeny());
+ registrationBean.addInitParameter("deny", config.getDeny());
}
if (config.getLoginUsername() != null) {
- registration.addInitParameter("loginUsername", config.getLoginUsername());
+ registrationBean.addInitParameter("loginUsername", config.getLoginUsername());
}
if (config.getLoginPassword() != null) {
- registration.addInitParameter("loginPassword", config.getLoginPassword());
+ registrationBean.addInitParameter("loginPassword", config.getLoginPassword());
}
if (config.getResetEnable() != null) {
- registration.addInitParameter("resetEnable", config.getResetEnable());
+ registrationBean.addInitParameter("resetEnable", config.getResetEnable());
}
- return registration;
+ return registrationBean;
}
}