一、使用Druid数据库连接池
数据库连接池只有手动配置,才知道具体的过程。以前都是搭建好的项目,现在自己手动搭建一次。还遇到了不少坑。首先是,阿里巴巴的数据库连接池版本与SpringBoot版本会有一定的关系。好了,废话不多说。
(1)导入依赖。
<properties>
<springboot.druid.starter.version>1.1.21</springboot.druid.starter.version>
<springboot.mybatis.starter.version>2.1.0</springboot.mybatis.starter.version>
</properties>
<!-- druid start-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${springboot.druid.starter.version}</version>
</dependency>
<!-- mybatis依赖可拿到了JDBC得依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${springboot.mybatis.starter.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.19</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.55</version>
</dependency>
<!-- druid end-->
(2)然后在yml中加入如下配置。我这里自己遇到的坑就是,SpringBoot版本与druid版本不兼容,所以加入了main下面的配置。
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
druid:
# 配置数据源类型
url: jdbc:mysql://localhost:3306/basessm?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8
username: root
password: 3333
# 初始化,最小,最大连接数
initialSize: 10
minidle: 10
maxActive: 18
# 获取数据库连接等待的超时时间
maxWait: 60000
# 配置多久进行一次检测,检测需要关闭的空闲连接 单位毫秒
timeBetweenEvictionRunsMillis: 60000
#配置测试查询语句
validationQuery: SELECT 1 FROM dual
# 配置监控统计拦截的filters,去掉后,监控界面的sql无法统计
filters: stat,wall
(3)配置SQL监控的控制台
package com.zhoutianyu.learnspringboot.database;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* 参考
*/
@Configuration
public class DruidConfig {
@Bean
public ServletRegistrationBean statViewServlet() {
//创建servlet注册实体
ServletRegistrationBean servletRegistrationBean =
new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
//设置ip白名单
servletRegistrationBean.addInitParameter("allow", "127.0.0.1");
//设置ip黑名单,如果allow与deny共同存在时,deny优先于allow
servletRegistrationBean.addInitParameter("deny", "192.168.0.19");
//设置控制台管理用户
servletRegistrationBean.addInitParameter("loginUsername", "admin");
servletRegistrationBean.addInitParameter("loginPassword", "admin");
//是否可以重置数据
servletRegistrationBean.addInitParameter("resetEnable", "false");
return servletRegistrationBean;
}
@Bean
public FilterRegistrationBean statFilter() {
//创建过滤器
FilterRegistrationBean filterRegistrationBean =
new FilterRegistrationBean(new WebStatFilter());
//设置过滤器过滤路径
filterRegistrationBean.addUrlPatterns("/*");
//忽略过滤的形式
filterRegistrationBean.
addInitParameter("exclusions",
"*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
return filterRegistrationBean;
}
}
经过上面的三步配置后,就能够使用阿里巴巴的数据库连接池了。
二、测试
启动项目。控制台打印出成功初始化Druid数据库连接池的日志。说明集成成功。公司里一般用于慢查询监控。
访问SQL监控页面:http://localhost:8081/study/springboot/druid/login.html。输入账号密码admin、admin。
三、加密
因为连接的是阿里巴巴数据源的jar是druid-1.1.21.jar,因此可以输入命令
java -cp druid-1.1.21.jar com.alibaba.druid.filter.config.ConfigTools 你的密码
password与connectionProperties与开启解密功能config.enabled。
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
druid:
# 配置数据源类型
url: jdbc:mysql://localhost:3306/basessm?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8
username: root
password: fD520yBjHVmHK/jBzMvJNnhUhigWgDgkxLChwzwWvO3Eco3++cO+zq0RGqo1qWb9rFF/A+rfiAJJoKrtv9BZhA==
# 初始化,最小,最大连接数
initialSize: 10
minidle: 10
maxActive: 18
# 获取数据库连接等待的超时时间
maxWait: 60000
# 配置多久进行一次检测,检测需要关闭的空闲连接 单位毫秒
timeBetweenEvictionRunsMillis: 60000
#配置测试查询语句
validationQuery: SELECT 1 FROM dual
# 配置监控统计拦截的filters,去掉后,监控界面的sql无法统计
filters: stat,wall
connectProperties:
config.decrypt: true
#公钥${publicKey}
config.decrypt.key: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJU/4SOVwtf/vbv11EvHjxwshhgR9SpL30I/LPvuOFL28e7sEpW48m3IhDMksLGetqLp/sb3x5AC+N0p48TUwZsCAwEAAQ==
#开启 druid 密码解密功能
filter:
config:
enabled: true
#password: fD520yBjHVmHK/jBzMvJNnhUhigWgDgkxLChwzwWvO3Eco3++cO+zq0RGqo1qWb9rFF/A+rfiAJJoKrtv9BZhA==