Spring Boot之使用阿里巴巴Druid数据库连接池(数据源)

您所在的位置:网站首页 springboot数据库连接满了 Spring Boot之使用阿里巴巴Druid数据库连接池(数据源)

Spring Boot之使用阿里巴巴Druid数据库连接池(数据源)

2024-07-09 18:07| 来源: 网络整理| 查看: 265

                                                                                          

作者:谭东

Druid是一个关系型数据库连接池,它是阿里巴巴的一个开源项目。Druid支持所有JDBC兼容数据库,包括了Oracle、MySQL、PostgreSQL、SQL Server、H2等。Druid在监控、可扩展性、稳定性和性能方面具有明显的优势。通过Druid提供的监控功能,可以实时观察数据库连接池和SQL查询的工作情况。使用Druid连接池在一定程度上可以提高数据访问效率。

本文的内容基于前几节文章的项目来加入Druid库,实现数据库操作监控。

首先在pom.xml里加入依赖库。

com.alibaba druid-spring-boot-starter 1.1.10

然后在application.yml里加入数据库及连接池配置信息:

server: port: 8082 # HTTP (Tomcat) port spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/student?serverTimezone=GMT=&useUnicode=true&characterEncoding=utf-8&useSSL=true username: root password: Mysql123456 type: com.alibaba.druid.pool.DruidDataSource #最大活跃数 maxActive: 20 #初始化数量 initialSize: 1 #最大连接等待超时时间 maxWait: 60000 #打开PSCache,并且指定每个连接PSCache的大小 poolPreparedStatements: true maxPoolPreparedStatementPerConnectionSize: 20 #通过connectionProperties属性来打开mergeSql功能;慢SQL记录 #connectionProperties: druid.stargeSql=true;druid.stat.slowSqlMillis=5000 minIdle: 1 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 validationQuery: select 1 from dual testWhileIdle: true testOnBorrow: false testOnReturn: false #配置监控统计拦截的filters,去掉后监控界面sql将无法统计,'wall'用于防火墙 filters: stat, wall, log4j jpa: hibernate: ddl-auto: update # 第一次建表create 后面用update show-sql: true

接下来编译运行我们的项目,操作几下访问数据库的路径。

如果出现图上的类似信息,说明我们配置的Druid数据源成功。

接下来我们实现开启监控功能。实现数据库的各个方面的监控及数据统计,方便我们进行数据库的优化。

我们来实现Druid的访问Servlet和Filter。

在项目根目录新建DruidConfiguration类。

package com.tandong.testjavaweb; 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 DruidConfiguration { @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","druid"); servletRegistrationBean.addInitParameter("loginPassword","123456"); //是否可以重置数据 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的监控,我们重新编译运行项目。

访问:http://127.0.0.1:8082/druid/login.html ,输入用户名和密码登录。

然后,我们操作几下我们的访问数据库接口操作。

我们再点击SQL监控和URI监控。

可以看到我们的一些操作都被记录下来了。

完整项目Github地址:https://github.com/jaychou2012/Spring-Boot-Web

参考文献:

【1】druid/druid-spring-boot-starter.https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3