SpringBoot数据库连接池(8)

一、使用Druid数据库连接池

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

(1)导入依赖。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<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中加入如下配置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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监控的控制台

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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,因此可以输入命令

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

 

 

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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==

  

posted @   hzy_叶子  阅读(243)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示