Springboot集成 Druid

2024-04-10 1241阅读

文章目录

  • Druid介绍
  • 一、Druid依赖选择
  • 二、Druid配置
  • 三、页面效果
  • 三、配置原理
  • 总结

    Druid介绍

    Druid是一个开源的数据库连接池和SQL查询优化工具,用于提高应用程序对数据库的性能和可扩展性。主要提供的功能:数据库连接池、数据库连接池监控、SQL查询优化、数据源管理、防御SQL注入、统计和监控。

    注意:SpringBoot2.0默认是用com.zaxxer.hikari.HikariDataSource作为数据源。


    一、Druid依赖选择

    SpringBoot版本:2.7.12,所以此次选择的依赖是druid-spring-boot-starter,它基于传统的druid进行了封装,简化了配置,所以使用该依赖,同时引入log4j2的日志依赖,方便我们在监控时获取日志信息。

    	
        	com.alibaba
            druid-spring-boot-starter
            1.2.18
    	
    	
            org.springframework.boot
            spring-boot-starter-log4j2
        
    

    二、Druid配置

    基于application.yml进行配置

    spring:
      application:
        name: druid-demo
      datasource:
      	# 数据库相关配置
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/user
        username: root
        password: root
        druid:
          # 初始化连接数量
          initial-size: 5
          # 最小线连接数量
          min-idle: 5
          # 最大连接数量
          max-active: 20
          # 获取连接时最大等待时间,单位毫秒
          max-wait: 60000
          #销毁线程时检测当前连接的最后活动时间和当前时间差大于该值时,关闭当前连接
          min-evictable-idle-time-millis: 30000
          #用来检测连接是否有效的sql 必须是一个查询语句
          #mysql中为 select 'x'
          #oracle中为 select 1 from dual
          validation-query: select 'x'
          #申请连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为true
          test-on-borrow: false
          #归还连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为tru
          test-on-return: false
          # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
          # 配置监拉统计挡成的filters. stat: 监控统计、Log4j:日志记录、waLL: 防御sqL注入
          filters: stat,wall,log4j2
          # 配置后台监控
          stat-view-servlet:
          	# 允许访问的地址,这里因为时本地所以配置当前机器
            allow: 127.0.0.1
            # 是否开启访问
            enabled: true
            # 是否能够重置数据
            reset-enable: false
            # 管理页面登陆的用户名
            login-username: admin
            # 管理页面登陆的密码
            login-password: admin
    

    上面就是druid的基本配置,可以看到相较于传统的配置👇(不需要配置,仅仅作为对比)方式:

    @Bean
    public ServletRegistrationBean statViewServlet() {
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
        //ServletRegistrationBean reg = new ServletRegistrationBean();
        //reg.setServlet(new StatViewServlet());
        //reg.addUrlMappings("/druid/*");
        // 添加IP白名单
        servletRegistrationBean.addInitParameter("allow", "127.0.0.1");
        // 添加IP黑名单,当白名单和黑名单重复时,黑名单优先级更高
        //servletRegistrationBean.addInitParameter("deny", "127.0.0.1");
        // 添加控制台管理用户
        servletRegistrationBean.addInitParameter("loginUsername", "admin");
        servletRegistrationBean.addInitParameter("loginPassword", "123456");
        // 是否能够重置数据
        servletRegistrationBean.addInitParameter("resetEnable", "false");
        return servletRegistrationBean;
    }
    

    更加简洁了,开发人员只需要专注于配置信息,就可以快速的配置启用druid了,大大的提高了开发效率。

    三、页面效果

    启动项目,访问页面http://localhost:8080/druid

    Springboot集成 Druid

    输入刚才配置的用户名、密码进入管理页面

    Springboot集成 Druid

    三、配置原理

    接下来简单说一下自动配置的原理:

    1:先看一下引入依赖的目录结构

    Springboot集成 Druid

    SpringBoot自动装配的原理大体上,是读取各个依赖下的spring.factories文件

    Springboot集成 Druid

    可以看到里面时加载的DruidDataSourceAutoConfigure这个类

    Springboot集成 Druid

    可以看到我们是通过@Import({DruidSpringAopConfiguration.class, DruidStatViewServletConfiguration.class, DruidWebStatFilterConfiguration.class, DruidFilterConfiguration.class})相关的配置文件来直接读取yaml中的配置文件,内部通过register来实现自动配置的功能


    总结

    以上就是SpringBoot集成Druid数据库连接池工具,及简单的SpringBoot自动装配的原理。

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]