多数据源 - dynamic-datasource | 进阶 - 数据库加密


🗯️ 上节回顾:前节中,了解了 dynamic-datasource 的懒加载/初始化 SQL/无数据源启动。
👉 本节目标:了解 dynamic-datasource 的进阶用法 - 数据库加密。


数据库加密:指数据库的 url, username, password 需要加密。常用于安全性较高系统,不让普通开发通过配置知道生产库的连接配置。

实现原理

有些项目中,对数据库连接的关键字段有加密需求。比如常见的 Druid 就有此加密功能。
dynamic-datasource 复制了 Druid 的加密功能。简单来说,就是私钥加密,公钥解密。私钥自己拿着,公钥发布出去,公钥配置在程序中,用于解密。
使用步骤

  • 1️⃣ dynamic-datasource 使用 CryptoUtils 实现 RSA 加解密
  • 2️⃣ 然后在配置文件中使用 ENC(xxx) 替换掉明文(xxx 是密文)
  • 3️⃣ 最后在创建 DataSource 前使用 EncDataSourceInitEvent 类调用 CryptoUtils.decrypt(publicKey, 密文)解密

EncDataSourceInitEvent 类与 DataSourceInitEvent 接口

EncDataSourceInitEvent类 是 DataSourceInitEvent接口的实现类。

package com.baomidou.dynamic.datasource.event;
import com.baomidou.dynamic.datasource.creator.DataSourceProperty;
import javax.sql.DataSource;

/**
 * 多数据源连接池创建事件
 */
public interface DataSourceInitEvent {
   
    /**
     * 连接池创建前执行(可用于参数解密)
     *
     * @param dataSourceProperty 数据源基础信息
     */
    void beforeCreate(DataSourceProperty dat

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-21 22:06:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-21 22:06:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-21 22:06:01       82 阅读
  4. Python语言-面向对象

    2024-03-21 22:06:01       91 阅读

热门阅读

  1. shader学习记录——几何着色器

    2024-03-21 22:06:01       45 阅读
  2. c++简介

    2024-03-21 22:06:01       44 阅读
  3. web高可用集群(lvs负载均衡+keepalved高可用)

    2024-03-21 22:06:01       37 阅读
  4. 算法刷题day32

    2024-03-21 22:06:01       32 阅读
  5. Linux 安装RabbitMQ及RabbitMQ Web界面管理

    2024-03-21 22:06:01       38 阅读
  6. 注解的原理

    2024-03-21 22:06:01       35 阅读
  7. 浅谈Spring框架

    2024-03-21 22:06:01       44 阅读
  8. C 语言中常量和变量的区别

    2024-03-21 22:06:01       46 阅读