前言
项目中,有时我们需要使用一些数据库连接池,这里我们可以使用阿里巴巴出品的druid连接池管理。git地址 https://github.com/alibaba/druid
简介
Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。(官网这样讲的 ...)
依赖引入
首先我们引入相关依赖,目前最新版本为1.1.2
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.2</version>
</dependency>
配置文件
spring.datasource.url=
spring.datasource.username=
spring.datasource.password=
#...其他配置(可选,不是必须的)
配置详细的属性
- 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= #和上面的等价
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= #配置多个英文逗号分隔
....//more
- 监控配置
# WebStatFilter配置,说明请参考Druid Wiki,配置_配置WebStatFilter
spring.datasource.druid.web-stat-filter.enabled= #是否启用StatFilter默认值true
spring.datasource.druid.web-stat-filter.url-pattern=
spring.datasource.druid.web-stat-filter.exclusions=
spring.datasource.druid.web-stat-filter.session-stat-enable=
spring.datasource.druid.web-stat-filter.session-stat-max-count=
spring.datasource.druid.web-stat-filter.principal-session-name=
spring.datasource.druid.web-stat-filter.principal-cookie-name=
spring.datasource.druid.web-stat-filter.profile-enable=
# StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置
spring.datasource.druid.stat-view-servlet.enabled= #是否启用StatViewServlet默认值true
spring.datasource.druid.stat-view-servlet.url-pattern=
spring.datasource.druid.stat-view-servlet.reset-enable=
spring.datasource.druid.stat-view-servlet.login-username=
spring.datasource.druid.stat-view-servlet.login-password=
spring.datasource.druid.stat-view-servlet.allow=
spring.datasource.druid.stat-view-servlet.deny=
# Spring监控配置,说明请参考Druid Github Wiki,配置_Druid和Spring关联监控配置
spring.datasource.druid.aop-patterns= # Spring监控AOP切入点,如x.y.z.service.*,配置多个英文逗号分隔
# 如果spring.datasource.druid.aop-patterns要代理的类没有定义interface请设置spring.aop.proxy-target-class=true
配置加密
把数据库密码直接写入配置文件中并不是一个好的选择,这样很容易造成内部人员密码泄露,此时我们可以选择用druid的加密保存功能。
首先,我们可以写一个类调用druid的生成
import com.alibaba.druid.filter.config.ConfigTools;
public class CreateDruidPwd {
public static void main(String [] args){
String [] pwd={"123456"};
try {
ConfigTools.main(pwd);
// ConfigTools.main(new String[]{"123456"});
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行后可以看到,控制台输出了以下几个:
即:私钥,公钥,密码
我们把这些放到我们的application.properties配置文件中。
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
# 生成的加密后的密码(原密码 123456)
spring.datasource.password=QJEuE3n5CB4rQcKd+plbMa+6oc+5kNmqjQ/pRDAxgX3RYEYTON0ORLGAEanrRcfQky/9EqV+YUvyeRU+uWxc0Q==
# 生成的公钥
public-key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJV3yUklZKuyV43zgWHZ+3t8igVp+YVuOn5ocAZratYujmRJ6HiHE7ioplwkXsHS9+ISlXSRXQEJ4pY0xZgw0/MCAwEAAQ==
# 配置 connection-properties,启用加密,配置公钥。
spring.datasource.druid.connection-properties=config.decrypt=true;config.decrypt.key=${public-key}
# 启用ConfigFilter
spring.datasource.druid.filter.config.enabled=true
重新启动项目即可使用