0
点赞
收藏
分享

微信扫一扫

第九节 SpringBoot使用数据库连接池


一、使用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数据库连接池的日志。说明集成成功。公司里一般用于慢查询监控。

第九节 SpringBoot使用数据库连接池_spring

         访问SQL监控页面:​​http://localhost:8081/study/springboot/druid/login.html​​。输入账号密码admin、admin。

第九节 SpringBoot使用数据库连接池_spring_02

三、加密

        因为连接的是阿里巴巴数据源的jar是druid-1.1.21.jar,因此可以输入命令

java -cp druid-1.1.21.jar com.alibaba.druid.filter.config.ConfigTools 你的密码

 

第九节 SpringBoot使用数据库连接池_mysql_03

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==

 

三、源码下载

        本章节项目源码:​​点我下载源代码​​

        目录贴:跟着大宇学SpringBoot-------目录帖

 


举报

相关推荐

0 条评论