700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > druid监控页面_Spring boot学习(四)Spring boot整合Druid

druid监控页面_Spring boot学习(四)Spring boot整合Druid

时间:2024-09-08 16:28:58

相关推荐

druid监控页面_Spring boot学习(四)Spring boot整合Druid

前言

在上一篇博客中我们介绍了Spring boot配置Mybatis,但是并没有配置连接池,这在实际开发过程中肯定是不切实际的,多次的数据库连接会给程序和数据库都带来没必要的负担,这一篇博客我将介绍java中目前最好,最流行的数据库连接池---Druid。

Druid介绍

Druid是阿里巴巴的一个开源项目,号称为监控而生的数据库连接池,在功能、性能、扩展性方面都超过其他例如DBCP、C3P0、BoneCP、Proxool、JBoss DataSource等连接池,而且Druid已经在阿里巴巴部署了超过600个应用,通过了极为严格的考验,这才收获了大家的青睐!

Spring boot配置Druid

话不多说,下面开始在我们的项目中配置Druid。本篇博客在上一篇博客Spring boot 整合Mybatis的基础上配置Druid,关于Mybatis连接数据库的内容就不多说了。

添加依赖

在我们项目的pom.xml文件中添加如下的依赖:

com.alibaba

druid-spring-boot-starter

1.1.10

这里需要注意的是(很多人出错的原因),Druid还有另外一种依赖如下:

com.alibaba

druid

1.1.3

两种依赖都可以,但是配置的方式有些不同,使用下面的这种依赖项,在配置的时候需要新建Druid的配置类文件,而第一种依赖项则不需要,这里我使用的就是第一种--更简单,第二种就不介绍了,想了解的朋友请自行Google。

添加配置

我看网上的教程这一块写的都很模糊,直接上来就是一堆配置,也没有表明配置是什么意思,这对于喜欢复制粘贴的人来说很nice但是真的不利于我们掌握理解,所以我这里尽量分层给大家介绍的更清晰一些。

首先在项目的配置文件application.properties文件中添加如下内容,表明使用Druid连接池:

#表明使用Druid连接池

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

配置数据源信息(整合Mybatis的时候已经说过了,为了连贯性这里再提一遍)

#配置实体类的位置

mybatis.type-aliases-package=com.web.springbootmybatis.entity

#xml文件位置

mybatis.mapper-locations=classpath:mapper/*.xml

#mysql数据库连接信息配置

#mysql驱动

spring.datasource.driverClassName=com.mysql.jdbc.Driver

#数据库连接信息

spring.datasource.url=jdbc:mysql://localhost:3306/eran?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8

#数据库用户名

spring.datasource.username=root

#数据库密码

spring.datasource.password=root

接下来配置连接池的相关属性,这些参数根据自己的需要灵活配置即可:

#初始化时建立物理连接的个数。

spring.datasource.druid.initial-size=5

#最大连接池数量

spring.datasource.druid.max-active=20

#最小连接池数量

spring.datasource.druid.min-idle=5

#获取连接时最大等待时间,单位毫秒

spring.datasource.druid.max-wait=3000

#是否缓存preparedStatement,也就是PSCache,PSCache对支持游标的数据库性能提升巨大,比如说oracle,在mysql下建议关闭。

spring.datasource.druid.pool-prepared-statements=false

#要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100

spring.datasource.druid.max-open-prepared-statements= -1

#配置检测可以关闭的空闲连接间隔时间

spring.datasource.druid.time-between-eviction-runs-millis=60000

# 配置连接在池中的最小生存时间

spring.datasource.druid.min-evictable-idle-time-millis= 300000

spring.datasource.druid.max-evictable-idle-time-millis= 400000

通过别名的方式配置扩展插件,常用的插件有:这里我们就配置了stat和wall,配置多个英文逗号分隔,配置如下:

#监控统计的stat,以及防sql注入的wall

spring.datasource.druid.filters= stat,wall

#Spring监控AOP切入点,如x.y.z.service.*,配置多个英文逗号分隔

spring.datasource.druid.aop-patterns= com.web.springbootdruid.service.*

这里配置很重要,比如不配置stat,我们在Druid的监控页面中就拿不到想要的信息。
上边我们开启stat监控统计插件,下边进行监控配置:

#是否启用StatFilter默认值true

spring.datasource.druid.web-stat-filter.enabled= true

#添加过滤规则

spring.datasource.druid.web-stat-filter.url-pattern=/*

#忽略过滤的格式

spring.datasource.druid.web-stat-filter.exclusions=*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*

StatViewServlet配置:Druid内置提供了一个StatViewServlet用于展示Druid的统计信息,StatViewServlet的用途包括:提供监控信息展示的html页面提供监控信息的JSON API

配置如下,需要注意的是用户名和密码:

#是否启用StatViewServlet默认值true

spring.datasource.druid.stat-view-servlet.enabled= true

#访问路径为/druid时,跳转到StatViewServlet

spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*

# 是否能够重置数据

spring.datasource.druid.stat-view-servlet.reset-enable=false

# 需要账号密码才能访问控制台,默认为root

spring.datasource.druid.stat-view-servlet.login-username=druid

spring.datasource.druid.stat-view-servlet.login-password=druid

#IP白名单

spring.datasource.druid.stat-view-servlet.allow=127.0.0.1

#IP黑名单(共同存在时,deny优先于allow)

spring.datasource.druid.stat-view-servlet.deny=

到这里,关于Druid的配置就基本完成了,想要了解更多的朋友,可以去查阅官方文档【传送门】

验证Druid

我们直接启动项目,浏览器访问localhost:8080/druid或者127.0.0.1:8080/druid得到如下页面说明配置成功:

进入Druid的登陆页面,输入我们在配置文件中配置的用户名和密码登陆,进入下面的页面:

首页可以看到一些基本配置信息,点击菜单栏中的数据源可以查看到我们的数据源配置信息,以及连接池配置信息:

点击sql监控,查看执行sql信息:

发现此时没有任何sql执行记录,所以我们访问链接localhost:8080/user(上一篇博客的内容),执行一次查询操作,再来查看 sql监控页面,发现已经有了一条记录:

点击该条记录可以查看更多详情,这里就不介绍了,配置成功的小伙伴们可以自己体验Druid的各种强大功能!

结语

到这里,Spring boot整合Druid的内容就介绍完了,希望对您有所帮助,下一篇再见!bye~

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。