zoukankan      html  css  js  c++  java
  • SpringBoot数据库连接池(8)

    一、使用Druid数据库连接池

    首先是,阿里巴巴的数据库连接池版本与SpringBoot版本会有一定的关系。

    (1)导入依赖。

        <properties>
            <springboot.druid.starter.version>1.1.21</springboot.druid.starter.version>
            <springboot.mybatis.starter.version>2.1.0</springboot.mybatis.starter.version>
        </properties>
     
            <!-- druid start-->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>${springboot.druid.starter.version}</version>
            </dependency>
            <!-- mybatis依赖可拿到了JDBC得依赖-->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>${springboot.mybatis.starter.version}</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.19</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.55</version>
            </dependency>
            <!-- druid end-->
    

    (2)然后在yml中加入如下配置。

    spring:
      datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        druid:
          # 配置数据源类型
          url: jdbc:mysql://localhost:3306/basessm?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8
          username: root
          password: 3333
          # 初始化,最小,最大连接数
          initialSize: 10
          minidle: 10
          maxActive: 18
          # 获取数据库连接等待的超时时间
          maxWait: 60000
          # 配置多久进行一次检测,检测需要关闭的空闲连接 单位毫秒
          timeBetweenEvictionRunsMillis: 60000
          #配置测试查询语句
          validationQuery: SELECT 1 FROM dual
          # 配置监控统计拦截的filters,去掉后,监控界面的sql无法统计
          filters: stat,wall
    

    (3)配置SQL监控的控制台

    package com.hanzhenya.learnspringboot.database;
     
    import com.alibaba.druid.support.http.StatViewServlet;
    import com.alibaba.druid.support.http.WebStatFilter;
    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;
     
    /**
     * 参考https://www.cnblogs.com/NeverCtrl-C/p/8024580.html
     */
    @Configuration
    public class DruidConfig {
     
        @Bean
        public ServletRegistrationBean statViewServlet() {
            //创建servlet注册实体
            ServletRegistrationBean servletRegistrationBean = 
                   new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
            //设置ip白名单
            servletRegistrationBean.addInitParameter("allow", "127.0.0.1");
            //设置ip黑名单,如果allow与deny共同存在时,deny优先于allow
            servletRegistrationBean.addInitParameter("deny", "192.168.0.19");
            //设置控制台管理用户
            servletRegistrationBean.addInitParameter("loginUsername", "admin");
            servletRegistrationBean.addInitParameter("loginPassword", "admin");
            //是否可以重置数据
            servletRegistrationBean.addInitParameter("resetEnable", "false");
            return servletRegistrationBean;
        }
     
        @Bean
        public FilterRegistrationBean statFilter() {
            //创建过滤器
            FilterRegistrationBean filterRegistrationBean = 
                   new FilterRegistrationBean(new WebStatFilter());
            //设置过滤器过滤路径
            filterRegistrationBean.addUrlPatterns("/*");
            //忽略过滤的形式
            filterRegistrationBean.
                 addInitParameter("exclusions",
                         "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
            return filterRegistrationBean;
        }
    }
    

    二、测试

    访问SQL监控页面:http://localhost:8081/study/springboot/druid/login.html。输入账号密码admin、admin。

    三、加密

    因为连接的是阿里巴巴数据源的jar是druid-1.1.21.jar,因此可以输入命令

    java -cp druid-1.1.21.jar com.alibaba.druid.filter.config.ConfigTools 你的密码
    

    因此,需要配置password与connectionProperties与开启解密功能config.enabled。

    spring:
      datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        druid:
          # 配置数据源类型
          url: jdbc:mysql://localhost:3306/basessm?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8
          username: root
          password: fD520yBjHVmHK/jBzMvJNnhUhigWgDgkxLChwzwWvO3Eco3++cO+zq0RGqo1qWb9rFF/A+rfiAJJoKrtv9BZhA==
          # 初始化,最小,最大连接数
          initialSize: 10
          minidle: 10
          maxActive: 18
          # 获取数据库连接等待的超时时间
          maxWait: 60000
          # 配置多久进行一次检测,检测需要关闭的空闲连接 单位毫秒
          timeBetweenEvictionRunsMillis: 60000
          #配置测试查询语句
          validationQuery: SELECT 1 FROM dual
          # 配置监控统计拦截的filters,去掉后,监控界面的sql无法统计
          filters: stat,wall
     
          connectProperties:
              config.decrypt: true
              #公钥${publicKey}
              config.decrypt.key: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJU/4SOVwtf/vbv11EvHjxwshhgR9SpL30I/LPvuOFL28e7sEpW48m3IhDMksLGetqLp/sb3x5AC+N0p48TUwZsCAwEAAQ==
          #开启 druid 密码解密功能
          filter:
            config:
              enabled: true
          #password: fD520yBjHVmHK/jBzMvJNnhUhigWgDgkxLChwzwWvO3Eco3++cO+zq0RGqo1qWb9rFF/A+rfiAJJoKrtv9BZhA==
    

      

  • 相关阅读:
    MongoDB 基础命令 (MongoDB Shell)
    MongoDB 在 Mac OSX 平台安装
    数组根据index拆分和查询下标
    简单介绍递归算法以及应用场景
    android studio ndk开发环境搭建
    基于vue开发的多功能的时间选择器组件,开箱即用
    简单了解JS中的几种遍历
    零基础学习webpack打包管理
    让你高效的理解JavaScript中的同步、异步和事件循环
    学习flex布局(弹性布局)
  • 原文地址:https://www.cnblogs.com/h-z-y/p/14601717.html
Copyright © 2011-2022 走看看