• Spring Boot 整合Druid数据源(一)


    Druid是阿里巴巴的一个开源的JDBC组件,该组件由数据库连接池、插件框架和SQL解析器组成,主要功能如下:

    1.DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系。 

    2.DruidDataSource 高效可管理的数据库连接池。

    3.SQLParser解析器兼容所有的JDBC数据库,如:Mysql,Oracle、SQL Server数据库。

    同时它结合了C3P0、DBCP、PROXOOL等DB池的优点,加入了日志监控,在稳定性、可扩展性和性能方便具有明显的优势,可以通过监控功能分析数据库连接和SQL的执行情况。

    Spring Boot 整合Druid有两种方式:

    第一种:druid依赖包;
    第二种:druid-spring-boot-starter依赖包,已分享:Spring Boot 整合Druid数据源(二)

    这里使用的是第一种方式,第一种方式需要使用@Configuration将Druid数据源注册到IOC容器中,需要配置管理后台的Servlet和配置web监控的过滤器,这里使用是2.0.2.RELEASE 版本.

     1.引入Druid依赖包

    打开pom.xml文件加入,如下代码:

    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.10</version>
    </dependency>

    2.设置Druid连接池参数

    打开application.yml文件加入,如下代码:

    spring:
      datasource:
        url: jdbc:mysql://127.0.0.1:3306/blog
        username: root
        password: root
        driver-class-name: com.mysql.jdbc.Driver
       ###################以下为druid增加的配置###########################
        type: com.alibaba.druid.pool.DruidDataSource
       # 下面为连接池的补充设置,应用到上面所有数据源中
       # 初始化大小,最小,最大
        initialSize: 5
        minIdle: 5
        maxActive: 20
      # 配置获取连接等待超时的时间
        maxWait: 60000
      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
        timeBetweenEvictionRunsMillis: 60000
      # 配置一个连接在池中最小生存的时间,单位是毫秒
        minEvictableIdleTimeMillis: 300000
        validationQuery: SELECT 1 FROM DUAL
        testWhileIdle: true
        testOnBorrow: false
        testOnReturn: false
      # 打开PSCache,并且指定每个连接上PSCache的大小
        poolPreparedStatements: true
        maxPoolPreparedStatementPerConnectionSize: 20
      # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
        filters: stat,wall
      # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
        connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
      # 合并多个DruidDataSource的监控数据
        useGlobalDataSourceStat: true
      ###############以上为配置druid添加的配置########################################

     3.开启Druid监控功能

    package com.blog.config;
    
    import javax.sql.DataSource;
    
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.boot.web.servlet.FilterRegistrationBean;
    import org.springframework.boot.web.servlet.ServletRegistrationBean;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    import com.alibaba.druid.pool.DruidDataSource;
    import com.alibaba.druid.support.http.StatViewServlet;
    import com.alibaba.druid.support.http.WebStatFilter;
    
    /**
     * 开启Druid监控功能,需要在application.yml文件中以spring.datasource开头的信息配置相关信息.
     *
     * @author huxiaoguang
     */
    @Configuration
    public class DruidConfig 
    {
        //将设置参数的druid的数据源注册到IOC容器中
        @ConfigurationProperties(prefix = "spring.datasource")
        @Bean
        public DataSource druid() {
            return new DruidDataSource();
        }
        
        //1.配置管理后台的Servlet
        @Bean
        public ServletRegistrationBean<StatViewServlet> statViewServlet()
        {
            ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
            
            servletRegistrationBean.addInitParameter("loginUsername", "huxiaoguang");//登录后台时的用户名
            servletRegistrationBean.addInitParameter("loginPassword", "123456");//登录后台时的密码
            servletRegistrationBean.addInitParameter("allow","");//默认就是允许所有的访问
            servletRegistrationBean.addInitParameter("deny","");//拒绝
            
            return servletRegistrationBean;
        }
        
        //2.配置一个web监控的过滤器
        @Bean
        public FilterRegistrationBean webStatFilter()
        {
            FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
            filterRegistrationBean.setFilter(new WebStatFilter());
            
            //添加过滤规则
            filterRegistrationBean.addUrlPatterns("/*");
            
            //添加过滤白名单,不拦截的请求
            filterRegistrationBean.addInitParameter("exclusions", "*.js, *.css, /druid/*");
            
            return filterRegistrationBean;
        }
    }

     4.重启启动Springboot 项目

    在Springboot 的启动日志中是否有 Located MBean 'druidDataSource': registering with JMX server as MBean [com.alibaba.druid.pool:name=druidDataSource,type=DruidDataSource],如果有就说明Springboot整合Druid成功。

     5.使用Druid监控管理

    以上配置成功以后,访问:http://127.0.0.1:8080/druid/index.html

    跳转到登录界面:输入DruidConfig 设置的用户名和密码,登录成功后如下图:

    通过Druid的监控功能,为我们查找执行效率低,耗时长的慢SQL提供优化依据,同时提供数据源、sql防火墙,web应用,URI监控、Session监控,spring监控等功能,帮助我们分析系统问题提供了依据,如果需要在生成环境中使用Druid的监控功能,建议使用VPN访问内网的方式访问。

     以上是Spring Boot 整合Druid数据源的过程,如有错误,欢迎指出。

  • 相关阅读:
    angularjs+ionic的app端分页和条件
    js中对象的自定义排序
    angularJS入门笔记
    SpringBoot学习历程
    页面渲染流程
    跨域问题
    jquery知识点结合使用
    对bootstrap模态框的小尝试
    登录页面两端对齐的样式问题
    输入两个数字,将比较结果输出到页面
  • 原文地址:https://www.cnblogs.com/huxiaoguang/p/10807235.html
Copyright © 2020-2023  润新知