Merge remote-tracking branch 'origin/master'

This commit is contained in:
lihengming
2017-07-24 10:28:18 +08:00
3 changed files with 128 additions and 93 deletions
+41 -36
View File
@@ -5,47 +5,48 @@
Druid Spring Boot Starter 用于帮助你在Spring Boot项目中轻松集成Druid数据库连接池和监控。
## 如何使用
1.在 Spring Boot 项目中加入```druid-spring-boot-starter```依赖。
1. 在 Spring Boot 项目中加入```druid-spring-boot-starter```依赖
Maven
```xml
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.2</version>
</dependency>
```
Gradle
```xml
compile 'com.alibaba:druid-spring-boot-starter:1.1.2'
```
2.添加配置
```xml
spring.datasource.url=
spring.datasource.username=
spring.datasource.password=
```
```Maven```
```xml
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.2</version>
</dependency>
```
```Gradle```
```xml
compile 'com.alibaba:druid-spring-boot-starter:1.1.2'
```
2. 添加配置
```xml
spring.datasource.url=
spring.datasource.username=
spring.datasource.password=
# ...其他配置(可选,不是必须的)
```
## 配置属性
Druid Spring Boot Starter 配置属性的名称完全遵照Druid,你可以通过下面这些配置属性来配置Druid数据库连接池和监控,如果没有配置则使用默认值。
Druid Spring Boot Starter 配置属性的名称完全遵照 Druid,你可以通过 Spring Boot 配置文件来配置Druid数据库连接池和监控,如果没有配置则使用默认值。
- 数据源配置
- JDBC 配置
```xml
# JDBC配置
spring.datasource.druid.url= # 或spring.datasource.url=
spring.datasource.druid.username= # 或spring.datasource.username=
spring.datasource.druid.password= # 或spring.datasource.password=
spring.datasource.druid.driver-class-name= #或 spring.datasource.driver-class-name=
# 连接池配置
```
- 连接池配置
```
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= #等价于上面的max-pool-prepared-statement-per-connection-size
spring.datasource.druid.max-open-prepared-statements= #和上面的等价
spring.datasource.druid.validation-query=
spring.datasource.druid.validation-query-timeout=
spring.datasource.druid.test-on-borrow=
@@ -57,8 +58,6 @@ spring.datasource.druid.max-evictable-idle-time-millis=
spring.datasource.druid.filters= #配置多个英文逗号分隔
....//more
```
更多配置请参考WIKI文档,或查看 ```DruidDataSource``` 内的成员变量(提供set方法即可配置),或根据IDE提示来进行配置。
- 监控配置
```
# WebStatFilter配置,说明请参考Druid Wiki,配置_配置WebStatFilter
@@ -84,7 +83,8 @@ 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
```
IDE会对 Druid 所有的配置属性进行输入提示,配置文件的格式你可以选择```.properties```或```.yml```,效果是一样的。
Druid Spring Boot Starter 不仅限于对以上配置属性提供支持,[```DruidDataSource```](https://github.com/alibaba/druid/blob/master/src/main/java/com/alibaba/druid/pool/DruidDataSource.java) 内提供```setter```方法的可配置属性都将被支持。你可以参考WIKI文档或通过IDE输入提示来进行配置。配置文件的格式你可以选择```.properties```或```.yml```,效果是一样的,在配置较多的情况下推荐使用```.yml```。
## 如何配置多数据源
@@ -127,31 +127,36 @@ public DataSource dataSourceTwo(){
}
```
## 如何配置Filter
如果通过```spring.datasource.druid.filters=stat,wall,log4j...```来启用默认的Filter配置不能满足你的需要,你可以通过配置文件来配置Filter,下面是例子。
## 如何配置 Filter
你可以通过 ```spring.datasource.druid.filters=stat,wall,log4j ...``` 的方式来启用相应的内置Filter,不过这些Filter都是默认配置。如果默认配置不能满足你的需求,你可以放弃这种方式,通过配置文件来配置Filter,下面是例子。
```xml
# 自定义StatFilter 配置
# 配置StatFilter
spring.datasource.druid.filter.stat.db-type=h2
spring.datasource.druid.filter.stat.log-slow-sql=true
spring.datasource.druid.filter.stat.slow-sql-millis=2000
# 自定义WallFilter 配置,其他 Filter 不再演示
# 配置WallFilter
spring.datasource.druid.filter.wall.enabled=true
spring.datasource.druid.filter.wall.db-type=h2
spring.datasource.druid.filter.wall.config.delete-allow=false
spring.datasource.druid.filter.wall.config.drop-table-allow=false
# 其他 Filter 配置不再演示
```
目前为以下Filter 提供配置支持,请参考文档或者IDE提示进行配置
目前为以下 Filter 提供了配置支持,请参考文档或者根据IDE提示(```spring.datasource.druid.filter.*```)进行配置。
- StatFilter
- WallFilter
- ConfigFilter
- EncodingConvertFilter
- Slf4jLogFilter
- Log4jFilter
- Log4j2Filter
- CommonsLogFilter
- WallFilter
默认会启用 StatFilter,你也可以将其```enabled```设置为```false```关闭,其他Filter配置生效需将对应的```enabled```设置为```true```。
要想使自定义 Filter 配置生效需要将对应 Filter 的 ```enabled``` 设置为 ```true``` ,Druid Spring Boot Starter 默认会启用 StatFilter,你也可以将其 ```enabled``` 设置为 ```false``` 来禁用它。
## IDE 提示支持
![](https://raw.githubusercontent.com/lihengming/java-codes/master/shared-resources/github-images/druid-spring-boot-starter-ide-hint.jpg)
## 演示
克隆项目,运行```test```包内的```DemoApplication```。
+85 -56
View File
@@ -5,32 +5,39 @@
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
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.2</version>
</dependency>
```
Gradle
```xml
compile 'com.alibaba:druid-spring-boot-starter:1.1.2'
```
1. Add the ```druid-spring-boot-starter``` dependency in Spring Boot project.
```Maven```
```xml
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.2</version>
</dependency>
```
```Gradle```
```xml
compile 'com.alibaba:druid-spring-boot-starter:1.1.2'
```
2. Add configuration properties.
```xml
spring.datasource.url=
spring.datasource.username=
spring.datasource.password=
# ...other config (optional)
```
## 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.
- JDBC
```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
- Connection pool
```
spring.datasource.druid.initial-size=
spring.datasource.druid.max-active=
spring.datasource.druid.min-idle=
@@ -47,7 +54,9 @@ 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.
```
- Monitor
```
# WebStatFilter properties, detail see Druid Wiki
spring.datasource.druid.web-stat-filter.enabled= #Enable StatFilter, default value true.
spring.datasource.druid.web-stat-filter.url-pattern=
@@ -71,58 +80,78 @@ spring.datasource.druid.stat-view-servlet.deny=
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 IDE prompts the above configuration properties, 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: [FAQ #25](https://github.com/alibaba/druid/wiki/FAQ#25-how-to-add-custom-wallconfig-filter-in-the-spring-boot-) has a custom ```WallConfig, Filter``` example for reference.
The Druid Spring Boot Starter is not limited to support for the above configuration properties, and the configurable properties that provide the ```setter``` method in [``` DruidDataSource```](https://github.com/alibaba/druid/blob/master/src/main/java/com/alibaba/druid/pool/DruidDataSource.java) will be supported. You can refer to the WIKI document or configure it via the IDE input prompt. The format of the configuration file You can choose ```.properties``` or``` .yml```, the effect is the same, in the configuration of more cases recommend the use of ```.yml```.
## How to Configuration Multiple DataSource
1. Add DataSource properties
1. Add config
```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.url=
spring.datasource.username=
spring.datasource.password=
# DruidDataSurce configuration, extents spring.datasource. * configuration,, the same will be replaced.
spring.datasource.druid.initial-size=5
spring.datasource.druid.max-active=5
...
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=
# First DruidDataSurce configuration,extents spring.datasource.druid.* configuration, the same will be replaced.
...
spring.datasource.druid.one.max-active=10
spring.datasource.druid.one.max-wait=10000
...
# Second DruidDataSurce configuration,extents spring.datasource.druid.* configuration, the same will be replaced.
...
spring.datasource.druid.two.max-active=20
spring.datasource.druid.two.max-wait=20000
...
```
2. Use```DruidDataSourceBuilder```create DataSource
2. Create DruidDataSource
```java
@Bean
@Primary
public DataSource dataSourceOne(Environment env){
return DruidDataSourceBuilder
.create()
.build(env, "spring.datasource.druid.one.");
@Bean
@ConfigurationProperties("spring.datasource.druid.one")
public DataSource dataSourceOne(){
return DruidDataSourceBuilder.create().build();
}
@Bean
public DataSource dataSourceTwo(Environment env){
return DruidDataSourceBuilder
.create()
.build(env, "spring.datasource.druid.two.");
@ConfigurationProperties("spring.datasource.druid.two")
public DataSource dataSourceTwo(){
return DruidDataSourceBuilder.create().build();
}
```
## How to Configuration Filter
You can ```spring.datasource.druid.filters = stat, wall, log4j, dtc.``` way to enable the corresponding built-in Filter, but these are the default configuration Filter. If the default configuration can not meet your needs, you can give up this way, through the configuration file to configure the Filter, the following is an example.
```xml
# StatFilter configuration example.
spring.datasource.druid.filter.stat.db-type=h2
spring.datasource.druid.filter.stat.log-slow-sql=true
spring.datasource.druid.filter.stat.slow-sql-millis=2000
# WallFilter configuration example
spring.datasource.druid.filter.wall.enabled=true
spring.datasource.druid.filter.wall.db-type=h2
spring.datasource.druid.filter.wall.config.delete-allow=false
spring.datasource.druid.filter.wall.config.drop-table-allow=false
# Other Filter similar.
```
Currently, configuration support is provided for the following filters. Please refer to the documentation or configure it according to the IDE prompt (```spring.datasource.druid.filter. *```).
- StatFilter
- WallFilter
- ConfigFilter
- EncodingConvertFilter
- Slf4jLogFilter
- Log4jFilter
- Log4j2Filter
- CommonsLogFilter
Druid Spring Boot Starter will enable StatFilter by default, and you can also set its enabled to false.,make the Filter configuration take effect and need to set enabled to true.
## IDE Hints
![](https://raw.githubusercontent.com/lihengming/java-codes/master/shared-resources/github-images/druid-spring-boot-starter-ide-hint.jpg)
## Samples
Clone the project, run ```DemoApplication``` within the ```test``` package.
@@ -33,8 +33,8 @@ public class DruidFilterConfiguration {
@Bean
@ConfigurationProperties(FILTER_STAT_PREFIX)
@ConditionalOnProperty(prefix = FILTER_STAT_PREFIX, name = "enabled", matchIfMissing = true)
@ConditionalOnMissingBean
@ConditionalOnProperty(prefix = FILTER_CONFIG_PREFIX, name = "enabled", matchIfMissing = true)
public StatFilter statFilter() {
return new StatFilter();
}
@@ -82,6 +82,7 @@ public class DruidFilterConfiguration {
@Bean
@ConfigurationProperties(FILTER_COMMONS_LOG_PREFIX)
@ConditionalOnProperty(prefix = FILTER_COMMONS_LOG_PREFIX, name = "enabled")
@ConditionalOnMissingBean
public CommonsLogFilter commonsLogFilter() {
return new CommonsLogFilter();
}