成都网站建设设计

将想法与焦点和您一起共享

怎么在springboot中利用DRUID实现数据源监控

怎么在spring boot中利用DRUID实现数据源监控?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

创新互联建站专注于企业成都全网营销、网站重做改版、仓山网站定制设计、自适应品牌网站建设、H5页面制作商城开发、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为仓山等各大城市提供网站开发制作服务。

项目依赖:



  4.0.0
  
    org.springframework.boot
    spring-boot-starter-parent
    2.2.1.RELEASE
     
  
  io.githu.syske
  druid-datasouce-decrypt
  0.0.1-SNAPSHOT
  druid-datasouce-decrypt
  Demo project for Spring Boot

  
    1.8
  

  
    
      org.springframework.boot
      spring-boot-starter-web
    
    
      org.mybatis.spring.boot
      mybatis-spring-boot-starter
      2.1.1
    

    
      MySQL
      mysql-connector-java
      runtime
    

    
    
      com.alibaba
      druid-spring-boot-starter
      1.1.10
    

    
      org.springframework.boot
      spring-boot-starter-test
      test
      
        
          org.junit.vintage
          junit-vintage-engine
        
      
    
  

  
    
      
        org.springframework.boot
        spring-boot-maven-plugin
      
    
  

如果你的数据库是Oracle,那么你要把mysql的数据库驱动替换成Oracle驱动

修改spring boot项目配置信息

server:
 port: 8083

我采用的是yaml的方式,然后启动你的项目,因为没有controller和其他的代码,所以没什么效果,但是项目可以正常启动。

加密数据源密码,创建publickey

这里没什么好讲的,我直接放代码:

import org.junit.Test;

/**
 * @program: druid-datasouce-decrypt
 * @description:
 * @author: liu yan
 * @create: 2019-12-02 18:34
 */
public class DBencrydtTest {
  @Test
  public void test() {
    String[] args = {"root"};
    try {
      com.alibaba.druid.filter.config.ConfigTools.main(args);
    } catch (Exception e) {

    }

    System.out.println();
  }
}

需要说明的是,args数组中放置的是密码,直接运行上面的代码,你会看到控制台会打印如下信息:

privateKey:MIIBVAIBADANBgkqhkiFWERAERFrterfgdggE6AgEAAkEAqboz+iNXPv1jgKAhDW7W+L/NwqG6GDTo49BjmlMg3WxBg4w9h5RC3oRO40EOjL7+DtEBBlCZ6OHZfZWKh27FmwIDAQABAkA/azwQszPebX/IiAzRoCDjQYf4ucV3Vg3PUgZlm7okAbsXrxz2xrdnM8Er08YKm3vUOmWQmSvaOI3CqdrK1f2BAiEA4XbEkCOxWVxbDLihyudClvrgLbZZyODlx5E2phn4gXMCIQDAtvMeJiXlGQBxFr/ci0r99FiYUeag/ZFwOjyhIzWBOQIgYg3bEqzTNn/aAUBS7QGCjlLxKDBD//7/L7nRwI9O6k0CIQCdBnUiY8MM4UpS206JzZXVR3vI4TMiinovD8THJ4E5QQIgRM1QlD1PG5YTxBxZMrLm2weBxsqXhvdJuTc1GXmoUxg=
publicKey:MFwwDQYJKoZIhvcewrwerfrrgfg43534M/ojVz79Y4CgIQ1u1vi/zcKhuhg06OPQY5pTIN1sQYOMPYeEQt6ETuNBDoy+/g7RAQZQmejh3X2ViodexZsCAwEAAQ==
password:O9JBjc86r9IhEoIE6jevJtgsgCXZAKCWH2UtO0tbG62zqIK5G5qJOCm1u9ju+lnno15vmq+TO5WqEWGzvkDNGg==

privateKey是你的私钥,publicKey是公钥,password就是你加密后的密码。我们用到的配置有两个,一个是公钥,一个是密码,配置公钥的原因是要通过公钥进行解密。将如上信息保存好,后面再spring boot的配置中要用到。

增加数据源相关配置

增加数据源配置信息:

# 阿里巴巴druid数据源配置
spring:
 datasource:
 # 数据源驱动类型,这里是druid
  type: com.alibaba.druid.pool.DruidDataSource
  # sql脚本编码
  sql-script-encoding: utf-8
  druid:
  # 驱动的类名
   driver-class-name: com.mysql.cj.jdbc.Driver
   # 数据库连接密码
   username: root
   # 数据库地址
   url: jdbc:mysql://127.0.0.1:3307/spring?characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&serverTimezone=Asia/Shanghai
   # 这里配置的是前面我们生成的密码
   password: Y2YOft/vPjw/JFPkevqZZKi8pCHu5ambR2ivSxgipTbL76pOoxNw3Un5Hcarbe9AqUImr+wS7YI6TjJZOVYjzA==
   # 这里设置连接配置,key配置的是我们前面生成的publicKey
   connection-properties: config.decrypt=true;config.decrypt.key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJI/xqbyvpVttxfAKulKeSTIb7tZAGaFcPyTnE2r7AHTQ8kOnqKXDda4u59umt9XBFxi7db28KxeVooB138zuRUCAwEAAQ==
   filter:
    config:
    # 启用druid的拦截器
     enabled: true
   # 连接池的配置信息
   # 初始化时建立物理连接的个数
   initial-size: 3
   # 连接池最小连接数
   min-idle: 3
   # 连接池最大连接数
   max-active: 20
   # 获取连接时最大等待时间,单位毫秒
   max-wait: 60000
   # 申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
   test-while-idle: true
   # 既作为检测的间隔时间又作为testWhileIdel执行的依据
   time-between-connect-error-millis: 60000
   # 销毁线程时检测当前连接的最后活动时间和当前时间差大于该值时,关闭当前连接
   min-evictable-idle-time-millis: 30000
   # 用来检测连接是否有效的sql 必须是一个查询语句
   # mysql中为 select 'x'
   # oracle中为 select 1 from dual
   validationQuery: select 'x'
   # 申请连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为true
   test-on-borrow: false
   # 归还连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为true
   test-on-return: false
   # 是否缓存preparedStatement,mysql5.5+建议开启
   pool-prepared-statements: true
   # 当值大于0时poolPreparedStatements会自动修改为true
   max-pool-prepared-statement-per-connection-size: 20
   # 合并多个DruidDataSource的监控数据
   use-global-data-source-stat: false
   # 配置扩展插件
   #监控统计拦截的filters
   filters: stat,wall,slf4j
   # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
   connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
   # 定时输出统计信息到日志中,并每次输出日志会导致清零(reset)连接池相关的计数器。
   time-between-log-stats-millis: 300000
   # 配置DruidStatFilter
   web-stat-filter:
    enabled: true
    url-pattern: '/*'
    exclusions: '*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*'
   # 配置DruidStatViewServlet
   stat-view-servlet:
    # 是否启用StatViewServlet(监控页面)默认值为false(考虑到安全问题默认并未启动,如需启用建议设置密码或白名单以保障安全)
    enabled: true
    url-pattern: '/druid/*'
    # IP白名单(没有配置或者为空,则允许所有访问)
    allow: 127.0.0.1,192.168.0.1
    # IP黑名单 (存在共同时,deny优先于allow)
    deny: 192.168.0.128
    # 禁用HTML页面上的“Reset All”功能
    reset-enable: false
    # 登录名
    login-username: admin
    # 登录密码
    login-password: admin

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。


分享名称:怎么在springboot中利用DRUID实现数据源监控
文章地址:http://chengdu.cdxwcx.cn/article/ijidpe.html