mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
Merge pull request #1832 from lihengming/master
Druid Spring Boot Starter > 优化代码&IDE提示&更新文档&添加英文文档
This commit is contained in:
@@ -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
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>druid-spring-boot-starter</artifactId>
|
||||
<version>1.1.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>druid-spring-boot-starter</artifactId>
|
||||
<version>VERSION_CODE</version>
|
||||
</dependency>
|
||||
```
|
||||
### 配置项
|
||||
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/)
|
||||
[Spring Boot Reference](http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/)
|
||||
@@ -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
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>druid-spring-boot-starter</artifactId>
|
||||
<version>VERSION_CODE</version>
|
||||
</dependency>
|
||||
```
|
||||
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/)
|
||||
+15
-22
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -45,7 +45,7 @@ public class DruidDataSourceProperties {
|
||||
|
||||
private Long maxEvictableIdleTimeMillis;
|
||||
|
||||
private String filters;
|
||||
private String filters = "stat";
|
||||
|
||||
public String getUrl() {
|
||||
return url;
|
||||
|
||||
+8
-2
@@ -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;
|
||||
|
||||
+9
-9
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user