SpringBoot -集成Druid

news2024/12/25 0:51:33

文章目录

    • Druid
      • 概述
      • 使用
      • 问题解决
        • Spring监控不生效
          • 方式1:修改yml的配置写法
          • 方式2:参考DruidSpringAopConfiguration自行注入@Bean,灵活(更建议)

Druid

概述

官网: https://github.com/alibaba/druid

文档: https://github.com/alibaba/druid/wiki

基础配置列表: https://github.com/alibaba/druid/wiki/DruidDataSource配置属性列表

参考配置: https://github.com/alibaba/druid/wiki/DruidDataSource配置

依赖: https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter

内置过滤器的名字参考: com\alibaba\druid\1.2.15\druid-1.2.15.jar!\META-INF\druid-filter.properties


内置过滤器的名字参考:com\alibaba\druid\1.2.15\druid-1.2.15.jar!\META-INF\druid-filter.properties
在这里插入图片描述


配置读取类:com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
在这里插入图片描述


Druid支持的数据类型:com.alibaba.druid.DbType
在这里插入图片描述

使用

Druid管理访问: http://127.0.0.1:9999/druid/

在这里插入图片描述


pom.yml

<!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.15</version>
</dependency>


application.yml

spring:
  datasource:
    driver-class-name: com.p6spy.engine.spy.P6SpyDriver
    druid:
      web-stat-filter:
        enabled: true
        exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'
        session-stat-enable: true
        profile-enable: true
        url-pattern: /*
      # web页面开启
      stat-view-servlet:
        enabled: true
        login-username: root
        login-password: root
        url-pattern: /druid/*
        
      
      filters: stat,wall,mergeStat
      # 配置初始化大小、最小、最大
      min-idle: 10
      initial-size: 5
      max-active: 20
      # 配置获取连接等待超时的时间
      max-wait: 6000
      
      #  配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
      time-between-eviction-runs-millis: 10000
      
      #  配置一个连接在池中最小生存的时间,单位是毫秒
      min-evictable-idle-time-millis: 600000
      max-evictable-idle-time-millis: 1000000
      
      validation-query: SELECT 1 FROM DUAL
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      keep-alive: true
      phy-max-use-count: 100
      db-type: mysql
      
      # 坑,无排除选项,且值必须是逗号分割的字符串数组,建议参考com.alibaba.druid.spring.boot.autoconfigure.stat.DruidSpringAopConfiguration自行配置注入相关Bean
      #aop-patterns: "work.linruchang.*,work.linruchang.config.*,"
  


SpringConfig.java - 配置Druid的Spring监控

@Configuration
public class SpringConfig  implements WebMvcConfigurer {
    @Bean
    public DruidStatInterceptor druidStatInterceptor() {
        DruidStatInterceptor dsInterceptor = new DruidStatInterceptor();
        return dsInterceptor;
    }

    @Bean
    public JdkRegexpMethodPointcut druidStatPointcut() {
        JdkRegexpMethodPointcut pointcut = new JdkRegexpMethodPointcut();
        pointcut.setPattern("work.linruchang.*");//根据实际包名
        pointcut.setExcludedPatterns("work.linruchang.kafkaUiLite.conf.*", ".*config.*");
        return pointcut;
    }

    @Bean
    public DefaultPointcutAdvisor druidStatAdvisor(DruidStatInterceptor druidStatInterceptor, JdkRegexpMethodPointcut druidStatPointcut) {
        DefaultPointcutAdvisor defaultPointAdvisor = new DefaultPointcutAdvisor();
        defaultPointAdvisor.setPointcut(druidStatPointcut);
        defaultPointAdvisor.setAdvice(druidStatInterceptor);
        return defaultPointAdvisor;
    }
}

问题解决

Spring监控不生效

方式1:修改yml的配置写法

参考类: com.alibaba.druid.spring.boot.autoconfigure.stat.DruidSpringAopConfiguration

个人怀疑:@ConditionalOnProperty仅能识别到字符串,不能识别yml形式的数组语法

在这里插入图片描述


applicaiton.yml == 正确写法

spring:
  datasource:
    druid:
      # 坑,缺少排除选项,且值必须是逗号分割的字符串数组才行,个人建议还是使用自行设置JdkRegexpMethodPointcut拦截切面
      aop-patterns: "work.linruchang.*,work.linruchang.config.*"


applicaiton.yml == 错误写法

spring:
  datasource:
    druid:
      # 坑,无排除选项,且值必须是逗号分割的字符串数组,虽然通过@Value能获取到数组,但是不能被@ConditionalOnProperty注解识别到
      aop-patterns: 
        - "work.linruchang.*"
        - "work.linruchang.config.*"
方式2:参考DruidSpringAopConfiguration自行注入@Bean,灵活(更建议)
@Configuration
public class SpringConfig  implements WebMvcConfigurer {
    @Bean
    public DruidStatInterceptor druidStatInterceptor() {
        DruidStatInterceptor dsInterceptor = new DruidStatInterceptor();
        return dsInterceptor;
    }

    @Bean
    public JdkRegexpMethodPointcut druidStatPointcut() {
        JdkRegexpMethodPointcut pointcut = new JdkRegexpMethodPointcut();
        pointcut.setPattern("work.linruchang.*");//根据实际包名
        pointcut.setExcludedPatterns("work.linruchang.kafkaUiLite.conf.*", ".*config.*");
        return pointcut;
    }

    @Bean
    public DefaultPointcutAdvisor druidStatAdvisor(DruidStatInterceptor druidStatInterceptor, JdkRegexpMethodPointcut druidStatPointcut) {
        DefaultPointcutAdvisor defaultPointAdvisor = new DefaultPointcutAdvisor();
        defaultPointAdvisor.setPointcut(druidStatPointcut);
        defaultPointAdvisor.setAdvice(druidStatInterceptor);
        return defaultPointAdvisor;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/59055.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

校园论坛(Java)—— 用户管理系统模块

校园论坛&#xff08;Java&#xff09;—— 用户管理系统模块 文章目录校园论坛&#xff08;Java&#xff09;—— 用户管理系统模块[toc]1、写在前面2、系统结构设计2.1 各个页面之间的调用关系2.2. 用户管理系统模块各层的设计3、管理员管理用户功能3.1 管理员查看普通用户的…

微服务框架 SpringCloud微服务架构 10 使用Docker 10.1 镜像命令

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构10 使用Docker10.1 镜像命令10.1.1 镜像相关命令10.1.2 镜像操作命令10.1.…

SpringBoot_整合PageHelper

分页插件/PageHelper插件 我们在正常的查询业务之中,只需要加上一行代码就可以实现分页的数据的封装处理 实现原理 PageHelper方法使用了静态的ThreadLocal参数&#xff0c;分页参数和线程是绑定的。内部流程是ThreadLocal中设置了分页参数&#xff08;pageIndex&#xff0c…

TypeScript21(装饰器Decorator)

Decorator 装饰器是一项实验性特性&#xff0c;在未来的版本中可能会发生改变 不仅增加了代码的可读性&#xff0c;清晰地表达了意图&#xff0c;而且提供一种方便的手段&#xff0c;增加或修改类的功能&#xff1b; 若要启用实验性的装饰器特性&#xff0c;你必须在命令行或…

计算机网络 HTTPS

HTTPS HTTPS &#xff08;全称&#xff1a;Hypertext Transfer Protocol Secure &#xff09;&#xff0c;是以安全为目标的 HTTP 通道&#xff0c;在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。HTTPS 在HTTP 的基础下加入SSL&#xff0c;HTTPS 的安全基础是…

git:多分支管理

多分支管理1. 列出分支2. 新建分支3. 删除分支4. 切换分支5. 分支合并多分支开发的特点 | 作用1. 测试&#xff1a;合并之后再在分支中工作是否主分支里面的相同文件不会更改2. 测试&#xff1a;修改编辑test分支的文件&#xff0c;最后再合并分支&#xff0c;是否是直接覆盖&a…

FT2004(D2000)开发实战之启动流程介绍

一 启动流程概述 飞腾FT2004/D2000芯片提供两种引导方案,具体如下所示: 方案一: 方案二: 方案一和方案二的区别是第二阶段的运行组件不同,方案一运行的是U-boot、方案二运行的是UEFI 那么为什么会这样的了? 答案是:飞腾FT2004/D2000芯片既可以用于嵌入式方案,也可以…

Docker中网络的使用和配置用法详解

一、单个物理机中docker网络 1.1 Docker默认网桥 安装Docker 服务默认会创建一个 docker0 网桥&#xff08;其上有一个 docker0 内部接口&#xff09;&#xff0c;它在内核层连通了其他的物理或虚拟网卡&#xff0c;这就将所有容器和本地主机都放到同一个物理网络。 使用 doc…

初识猿如意开发工具

嗨&#xff0c;大家好&#xff0c;我是异星球的小怪同志 一个想法有点乱七八糟的小怪 如果觉得对你有帮助&#xff0c;请支持一波。 希望未来可以一起学习交流。 一、初遇猿如意 第一次听说猿如意开发工具&#xff0c;于是抱着试试的心态&#xff0c;开始下载尝试。 首先是…

算法导论23章最小生成树习题—23.2练习

23.2-1对于同一个输人图&#xff0c;Kruskal 算法返回的最小生成树可以不同。这种不同来源于对边进行排序时&#xff0c;对权重相同的边进行的不同处理。证明:对于图G的每棵最小生成树T&#xff0c;都存在一种办法来对G的边进行排序&#xff0c;使得Kruskal算法所返回的最小生成…

HTML+CSS+JS网页设计期末课程大作业——上海旅游景点(10页)web前端开发技术 web课程设计 网页规划与设计

&#x1f468;‍&#x1f393;学生HTML静态网页基础水平制作&#x1f469;‍&#x1f393;&#xff0c;页面排版干净简洁。使用HTMLCSS页面布局设计,web大学生网页设计作业源码&#xff0c;这是一个不错的旅游网页制作&#xff0c;画面精明&#xff0c;排版整洁&#xff0c;内容…

离散化【带题讲解】

全文目录&#x1f914; 原理&#x1f615; 区间和&#x1f635;‍&#x1f4ab; 建立映射&#x1f635;‍&#x1f4ab; 查找映射的下标&#x1f635;‍&#x1f4ab; 代码&#x1f914; 原理 离散化&#xff0c;把无限空间中有限的个体映射到有限的空间中去&#xff0c;以此提…

NVIDIA 安装 CUDA

名词解释&#xff1a;CUDA 是一个架构 该架构使GPU能够解决复杂的计算问题 此实战使用电脑为联想Y9000P 显卡型号为 3060 在安装 CUDA 之前需要先打开 NVIDIA 控制面板 一、准备工作 如图我这个显卡需要安装 CUDA 11.7 的版本 二、下载软件 进入官网下载 CUDA NVIDIA Deve…

解放军军官军衔(不含士兵军衔)分为3等10级

军衔&#xff0c;是国家最高权力机关授予军人的一种衔称。不同的级别有不同的军衔。对于军衔的认识&#xff0c;一些朋友或许只有片面的认识&#xff0c;下面&#xff0c;笔者就给大家来科普一下中国的军衔。 为了纪念中国人民解放军建军93周年&#xff0c;弘扬爱国主义精神&a…

被迫毕业,面试 30 家公司,终于上岸了!

大家好&#xff0c;我是君哥。今天分享一个老弟&#xff0c;被“毕业”后的求职经历。 在老东家干了 6 年&#xff0c;发展一般&#xff0c;很想出去&#xff0c;但是一直没有合适的机会&#xff0c;只好一边准备面试一边学习。让我没有想到的是&#xff0c;突然收到了“毕业”…

(1-线性回归问题)线性回归(Linear regression)Lasso回归和Ridge回归的区别

回归分析是机器学习中的经典算法之一&#xff0c;用途广泛&#xff0c;在用实际数据进行分析时&#xff0c;可能会遇到以下两种问题 过拟合, overfitting欠拟合, underfitting 在机器学习中&#xff0c;首先根据一批数据集来构建一个回归模型&#xff0c;然后在用另外一批数据…

Vue 中 (moment)操作日期的加减与展示

目录 基本语法 &#xff1a; 展示效果如下&#xff1a; 使用方式&#xff1a; 1、首先在 pacaage.json 中引入依赖 "moment": "^2.29.4" 2、然后命令行 install 安装 &#xff1a; 3、最后&#xff0c;在使用的页面引入moment 4、data 中我定义了一个…

python的Django项目中常见命令以及常错点(Linux环境下)

USE 数据库名 --------------- 切换数据库更新virtualenv库&#xff08;用于创建虚拟环境&#xff09;&#xff1a;sudo pip install -U virtualenv创建虚拟环境&#xff1a;virtualenv -p python venv(虚拟环境的目录名)激活虚拟环境&#xff1a;source venv/b…

利用Python处理excel表格,panda合并表格、合并多个excel、多个sheet

前言 记录一下&#xff0c;在使用pandas处理excel表格表格时候&#xff0c;关于分割(切分)表格这一块儿的操作。 这个系列会有三篇左右文章&#xff0c;这是第二篇&#xff0c;excel表格合并 我们常说的 excel文件&#xff0c; 在广义上&#xff0c;是指以 xls 或 xlsx 为后缀…

[1173]regexp_replace()和regexp_substr()函数的用法

文章目录REGEXP_REPLACE的使用方法命令格式&#xff1a;regexp_replace(source, pattern, replace_string, occurrence)参数说明返回值常用案例其他案例正则符号释义regexp_substr()函数的用法REGEXP_REPLACE的使用方法 命令格式&#xff1a;regexp_replace(source, pattern, r…