SpringBoot数据库连接池(8)
一、使用Druid数据库连接池
首先是,阿里巴巴的数据库连接池版本与SpringBoot版本会有一定的关系。
(1)导入依赖。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | < 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中加入如下配置。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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监控的控制台
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | package com.hanzhenya.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; /** * 参考https://www.cnblogs.com/NeverCtrl-C/p/8024580.html */ @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; } } |
二、测试
访问SQL监控页面:http://localhost:8081/study/springboot/druid/login.html。输入账号密码admin、admin。
三、加密
因为连接的是阿里巴巴数据源的jar是druid-1.1.21.jar,因此可以输入命令
1 | java -cp druid-1.1.21.jar com.alibaba.druid.filter.config.ConfigTools 你的密码 |
因此,需要配置password与connectionProperties与开启解密功能config.enabled。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | 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== |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步