Spring Boot整合Druid并使用Druid加密数据库链接

如果你不相信努力和时光,那么成果就会是第一个选择辜负你的。不要去否定你自己的过去,也不要用你的过去牵扯你现在的努力和对未来的展望。不是因为拥有希望你才去努力,而是去努力了,你才有可能看到希望的光芒。Spring Boot整合Druid并使用Druid加密数据库链接,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

1. Spring Boot引入Druid依赖

  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.18</version>
  </dependency>
  <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.8</version>
  </dependency>

2. application.yml 配置

server:
  port: 8001
spring:
    application:
        name: druid-dome
    datasource:
        url: jdbc:mysql://127.0.0.1:3306/dome?characterEncoding=utf-8&useUnicode=true&useSSL=false
        driver-class-name: com.mysql.cj.jdbc.Driver  # mysql8.0以前使用com.mysql.jdbc.Driver
        username: root
        password: 123456
        platform: mysql
        #通过这句配置将druid连接池引入到我们的配置中,spring会尽可能判断类型是什么,然后根据情况去匹配驱动类。
        type: com.alibaba.druid.pool.DruidDataSource
        druid:
            initial-size: 5  # 初始化大小
            min-idle: 5  # 最小
            max-active: 100  # 最大
            max-wait: 60000  # 配置获取连接等待超时的时间
            time-between-eviction-runs-millis: 60000  # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
            min-evictable-idle-time-millis: 300000  # 指定一个空闲连接最少空闲多久后可被清除,单位是毫秒
            validationQuery: select 'x'
            test-while-idle: true  # 当连接空闲时,是否执行连接测试
            test-on-borrow: false  # 当从连接池借用连接时,是否测试该连接
            test-on-return: false  # 在连接归还到连接池时是否测试该连接
            filters: config,wall,stat  # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
            poolPreparedStatements: true # 打开PSCache,并且指定每个连接上PSCache的大小
            maxPoolPreparedStatementPerConnectionSize: 20
            maxOpenPreparedStatements: 20
            # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
            connectionProperties: druid.stat.slowSqlMillis=200;druid.stat.logSlowSql=true;config.decrypt=false
             # 合并多个DruidDataSource的监控数据
            #use-global-data-source-stat: true
            #WebStatFilter配置,说明请参考Druid Wiki,配置_配置WebStatFilter
            web-stat-filter:
                enabled: true #是否启用StatFilter默认值true
                url-pattern: /*
                exclusions: /druid/*,*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico
                session-stat-enable: true
                session-stat-max-count: 10
            #StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置
            stat-view-servlet:
                enabled: true #是否启用StatViewServlet默认值true
                url-pattern: /druid/*
                reset-enable: true
                login-username: admin
                login-password: admin

3. 使用druid-x.x.x.jar Encode密码

# > druid_encode.txt 输出到指定文件
java -cp druid-1.2.8.jar com.alibaba.druid.filter.config.ConfigTools you_password > druid_encode.txt

使用druid-x.x.x.jar Encode密码 并输出到指定文件

4. 使用加密字符换替换Password 并添加publicKey

......

spring:
    datasource:
        url: jdbc:mysql://127.0.0.1:3306/dome?characterEncoding=utf-8&useUnicode=true&useSSL=false
        driver-class-name: com.mysql.cj.jdbc.Driver  # mysql8.0以前使用com.mysql.jdbc.Driver
        username: root
        password: <<加密字符串>>
        publicKey: <<encode_publicKey>>
......

5. 配置字符串解析

  1. 创建Druid配置类来解析加密字符串
import com.alibaba.druid.pool.DruidDataSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.sql.SQLException;

@Configuration
public class DruidConfig {
    private static final Logger logger = LoggerFactory.getLogger(DruidConfig.class);

    @Value("spring.datasource.publicKey")
    private String publicKey;


    @Bean
    @ConfigurationProperties(prefix = "spring.datasource")
    public DruidDataSource dataSource() throws SQLException {
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setFilters("config");
        druidDataSource.setConnectionProperties("config.decrypt=true;config.decrypt.key=" + publicKey);
        logger.error("Decode successful");
        return druidDataSource;
    }
}
  1. 启动工程查看解析:
    在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/194672.html

(1)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!