【SpringBoot 3.x】使用starter整合Druid

这篇具有很好参考价值的文章主要介绍了【SpringBoot 3.x】使用starter整合Druid。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Druid介绍

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

本地开发环境说明

开发依赖 版本
Spring Boot 3.0.6
druid-spring-boot-3-starter 1.2.18
JDK 20

SpringBoot集成Druid

如果是SpringBoot 2.x,使用以下依赖

<!-- SpringBoot 2.x -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>${druid-spring-boot-starter.version}</version>
</dependency>

如果是SpringBoot 3.x,使用以下依赖

<!-- SpringBoot 3.x -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-3-starter</artifactId>
    <version>${druid-spring-boot-starter.version}</version>
</dependency>

application.yml配置

为了方便演示和直观,配置文件拆分成2个,application.ymlapplication-druid.yml

application.yml

spring:
  profiles:
    active: druid
  datasource:
    driver-class-name: org.h2.Driver
    url: jdbc:h2:tcp://localhost/D:/ProgramFiles/h2database/data/test;MODE=MYSQL;
    username:
    password:

application-druid.yml配置

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    # Druid的其他属性配置
    druid:
      # 初始化时建立物理连接的个数
      initial-size: 5
      # 连接池的最小空闲数量
      min-idle: 5
      # 连接池最大连接数量
      max-active: 20
      # 获取连接时最大等待时间,单位毫秒
      max-wait: 60000
      # 申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
      test-while-idle: true
      # 既作为检测的间隔时间又作为testWhileIdel执行的依据
      time-between-eviction-runs-millis: 60000
      # 销毁线程时检测当前连接的最后活动时间和当前时间差大于该值时,关闭当前连接(配置连接在池中的最小生存时间)
      min-evictable-idle-time-millis: 30000
      # 用来检测数据库连接是否有效的sql 必须是一个查询语句(oracle中为 select 1 from dual)
      validation-query: select 'x'
      # 申请连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为true
      test-on-borrow: false
      # 归还连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为true
      test-on-return: false
      # 是否缓存preparedStatement, 也就是PSCache,PSCache对支持游标的数据库性能提升巨大,比如说oracle,在mysql下建议关闭。
      pool-prepared-statements: false
      # 置监控统计拦截的filters,去掉后监控界面sql无法统计,stat: 监控统计、Slf4j:日志记录、waLL: 防御sqL注入
      filters: stat,wall,slf4j
      # 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100
      max-pool-prepared-statement-per-connection-size: -1
      # 合并多个DruidDataSource的监控数据
      use-global-data-source-stat: true
      # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
      connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

      web-stat-filter:
        # 是否启用StatFilter默认值true
        enabled: true
        # 添加过滤规则
        url-pattern: /*
        # 忽略过滤的格式
        exclusions: /druid/*,*.js,*.gif,*.jpg,*.png,*.css,*.ico

      stat-view-servlet:
        # 是否启用StatViewServlet默认值true
        enabled: true
        # 访问路径为/druid时,跳转到StatViewServlet
        url-pattern: /druid/*
        # 是否能够重置数据
        reset-enable: false
        # 需要账号密码才能访问控制台,默认为root
        login-username: druid
        login-password: druid
        # IP白名单
        allow: 127.0.0.1
        # IP黑名单(共同存在时,deny优先于allow)
        deny:

集成过程出现的问题

由于本文使用SpringBoot 3.x版本,启动后,在浏览器输入文章来源地址https://www.toymoban.com/news/detail-541249.html

http://localhost:8080/druid
  • 但会报404的错误,首先要确保pom.xml引用的是druid-spring-boot-3-starter而不是druid-spring-boot-starter
  • 通过源码分析,druid-spring-boot-3-starter目前最新版本是1.2.18,虽然适配了SpringBoot3,但缺少自动装配的配置文件,需要手动在resources目录下创建META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports,文件内容如下
com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceAutoConfigure
  • 本来想针对这个问题提个issuePR,无奈github在国内访问太不稳定了

浏览器访问

  • 在浏览器输入: http://localhost:8080/druid
  • 登录账号密码是配置文件中指定的: druid/druid
    druid-spring-boot-starter最新版本,Spring Boot,spring boot,数据库,SpringBoot 3.x,连接池,Druid

在线文档

  • 官网: https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter

到了这里,关于【SpringBoot 3.x】使用starter整合Druid的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【SpringBoot】从零开始封装自己的starter并且引入到其他项目中使用

    简介 本文将介绍如何从零开始封装自己的starter并且引入到其他项目中使用 为什么要自己封装starter? 这样可以对spring以及其他第三方提供的starter做二次封装或者封装一些自己需要的内容提供给其他项目使用,提高项目级的代码复用性。 一、创建一个新的spring-boot项目 首先我

    2024年02月16日
    浏览(55)
  • Spring Boot整合Druid(druid 和 druid-spring-boot-starter)

    引言 在现代的Web应用开发中,高性能的数据库连接池是确保应用稳定性和响应性的关键因素之一。Druid是一个开源的高性能数据库连接池,具有强大的监控和统计功能,能够在Spring Boot应用中提供出色的数据库连接管理。本文将研究在Spring Boot中集成Druid连接池的步骤,以及如

    2024年01月19日
    浏览(70)
  • SpringBoot:手写一个 SpringBoot Starter

    声明:原文作者:yuan_404 启动器模块是一个 空 jar 文件,仅提供辅助性依赖管理,这些依赖可能用于自动装配或者其他类库 命名归约: 官方命名: 前缀:spring-boot-starter-xxx 比如:spring-boot-starter-web… 自定义命名: xxx-spring-boot-starter 比如:mybatis-spring-boot-starter 在IDEA中新建一

    2024年02月03日
    浏览(33)
  • 基于spring-boot-starter-data-elasticsearch整合elasticsearch于window系统

    在配置环境中会需要到elasticsearch和kibana,这两个和spring-boot-starter-data-elasticsearch都必须得保持版本一致,我们可以通过查看他maven的配置: 比如我使用的是 spring-boot-starter-data-elasticsearch:2.7.3 查看到他的maven的结构后可以看到他们都指向了elasticsearch的一个版本7.17.4,因此在电

    2024年04月25日
    浏览(43)
  • SpringBoot(十)SpringBoot自定义starter

        一个月的时间,转眼已经到了我的SpringBoot系列的第十篇文章。还记得我的第二篇文章SpringBoot(二)starter介绍_springboot的starter_heart荼毒的博客-CSDN博客 曾经介绍过starter。starter除了官方提供的以外,我们也可以自定义。本篇,就介绍下如何自定义一个工具类的starter。  

    2024年02月14日
    浏览(30)
  • SpringBoot自定义starter

    参考文章:SpringBoot自定义starter_springboot3.0自定义starter_kksilu的博客-CSDN博客 我这里是根据上面博主的文章做的练习   DemoService: DemoConfig: Spring.factories: 安装到maven仓库 在application.properties中添加配置: 启动类测试: 最后就可以看到,控制台输出    DemoService{demo=\\\'123\\\'}    了

    2024年02月12日
    浏览(42)
  • SpringBoot之自定义starter

    目录 一、什么是SpringBoot starter机制 二、为什么要自定义starter 三、什么时候需要创建自定义starter 四、自动加载核心注解说明 五、自定义starter的开发流程 案例一:为短信发送功能创建一个starter 案例二:AOP方式统一服务日志 SpringBoot中的starter是一种非常重要的机制(自动化配

    2024年02月01日
    浏览(38)
  • SpringBoot中自定义starter

    一、在线创建 首先打开 https://start.spring.io 这个网站,如下: 项目构建工具是 Maven 还是 Gradle ?有人用 Gradle 做 Java 后端项目,但是整体感觉 Gradle 在 Java 后端中使用的还是比较少,Gradle 在 Android 中使用较多,Java 后端,目前来看还是 Maven 为主,因此这里选择第一项。 开发语

    2024年02月10日
    浏览(45)
  • SpringBoot Starter 作用及原理

    本文会以 mybatis 为例,通过对比 mybatis-spring 和 mybatis-spring-boot-starter 代码示例,了解 Starter 的作用。并对 mybatis-spring-boot-starter 进行简单剖析,了解 Starter 原理。 下面还有投票,一起参与进来吧👍 有没有在入行后直接基于 SpringBoot 开发项目,没有 spring、servlet 开发经历的,

    2023年04月20日
    浏览(28)
  • 如何理解SpringBoot的Starter

    Starter是SpringBoot的四大核心功能特性之一 ,除此之外,SpringBoot还有自动装配,Actuator监控等特性 SpringBoot里面的这些特性,都是为了让开发者在开发基于Spring生态下的企业级应用时,只需要关系业务逻辑,减少对配置和外部环境的依赖 Starter是启动依赖,它的主要作用有几个:

    2024年02月09日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包