从零搭建SpringBoot后台框架(二)——集成Druid

254 阅读4分钟

一、引入Druid依赖

打开上篇文章→从零搭建SpringBoot后台框架(一)——框架搭建+集成mybatis中提到的pom.xml

找到<dependencies></dependencies>标签,在标签中添加Druid依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.20</version>
</dependency>
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

其中druid需要依赖log4j,所以一起引入

二、配置数据源连接池信息

在application.yml文件中添加如下配置

spring:
  datasource:
    druid:
      #JDBC配置
      url: jdbc:mysql://localhost:3306/demo?useSSL=false
      username: root
      password: 123456
      driver-class-name: com.mysql.cj.jdbc.Driver
      ###连接池配置-开始###
      initial-size: 5
      min-idle: 5
      max-active: 20
      #连接等待超时时间
      max-wait: 60000
      #是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。
      #在mysql5.5以下的版本中没有PSCache功能,建议关闭掉。5.5及以上版本有PSCache,建议开启。
      pool-prepared-statements: true
      #配置PSCache的大小
      max-pool-prepared-statement-per-connection-size: 20
      #用来检测连接是否有效的sql,要求是一个查询语句,常用SELECT 1 FROM DUAL
      validation-query: select 1 from dual
      #检测连接是否有效的超时时间,单位是秒。底层调用jdbc Statement对象的void setQueryTimeout(int seconds)方法
      validation-query-timeout: 3000
      #是否在连接池空闲一段时间后检验连接有效性
      test-while-idle: true
      #申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
      test-on-borrow: false
      #是否在归还到池中前进行检验
      test-on-return: false
      #间隔多久进行一次检测,检测需要关闭的空闲连接,单位毫秒
      time-between-eviction-runs-millis: 60000
      #一个连接在池中最小生存的时间,单位是毫秒
      min-evictable-idle-time-millis: 300000
      #配置连接池中连接,在时间段内一直空闲,被逐出连接池的时间,单位毫秒。在minEvictableIdleTimeMillis基础上扩展,
      #会在minEvictableIdleTimeMillis基础上判断连接是否空闲(默认逐出时间就是minEvictableIdleTimeMillis)
      max-evictable-idle-time-millis: 600000
      #配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
      filters: stat,wall,log4j
      #是否使用统计
      use-global-data-source-stat: true
      #通过connectProperties属性来打开mergeSql功能;慢SQL记录
      connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
      ###连接池配置-结束###
      ###监控配置-开始###
      # WebStatFilter配置,说明请参考Druid Wiki,配置_配置WebStatFilter
      web-stat-filter:
        #是否启用StatFilter,默认值false
        enabled: true
        #需要拦截的url
        url-pattern: /*
        #过滤器忽略的资源类型
        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
        #是否开启session统计功能,默认值false
        session-stat-enable: true
        #session统计最大值
        session-stat-max-count: 1000
        #session用户信息
        principal-session-name:
        #session用户cookie名称
        principal-cookie-name:
        #监控单个url调用的sql列表
        profile-enable: true
      # StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置
      stat-view-servlet:
        #是否启用StatViewServlet(监控页面)默认值为false(考虑到安全问题默认并未启动,如需启用建议设置密码或白名单以保障安全)
        enabled: true
        #监控页面拦截url
        url-pattern: /druid/*
        #是否启用重置功能
        reset-enable: false
        #监控页面登录用户名
        login-username: admin
        #监控页面登录用户密码
        login-password: admin
        #StatViewSerlvet展示出来的监控信息比较敏感,是系统运行的内部情况,如果你需要做访问控制,可以配置allow和deny这两个参数
        #deny优先于allow,如果在deny列表中,就算在allow列表中,也会被拒绝。如果allow没有配置或者为空,则允许所有访问
        #配置的格式
        #<IP>或者<IP>/<SUB_NET_MASK_size>其中128.242.127.1/24,配置多个英文逗号分隔
        #24表示,前面24位是子网掩码,比对的时候,前面24位相同就匹配,不支持IPV6。
        #监控页面白名单
        allow:
        #黑名单
        deny:
        #Spring监控配置,说明请参考Druid Github Wiki,配置_Druid和Spring关联监控配置
        #aop-patterns: com.demo.*.service.* #Spring监控AOP切入点,如x.y.z.service.*,配置多个英文逗号分隔
      ###监控配置-结束###

其中将上文的数据库配置,新增了druid层级,调整到了druid下面

三、启动服务器,访问数据连接池管理页面

打开浏览器,输入http://localhost:8080/druid 出现以下页面,为配置成功

image.png

输入yml中配置的账号密码admin/admin,即可查看SQL监控

image.png

image.png

四、项目地址

gitee

PS:可以通过tag下载本文对应的代码版本

五、结尾

整合druid已完成,有问题可以联系chenzhenlindx@qq.com

六、参考文章

  1. 从零搭建自己的SpringBoot后台框架(二)
  2. # SpringBoot实战(二十)集成Druid连接池