• springboot启动中动态修改数据源配置


    package com.hqhp.salesys.common.config;
    
    import cn.hutool.core.io.file.FileReader;
    import com.baomidou.dynamic.datasource.provider.AbstractDataSourceProvider;
    import com.baomidou.dynamic.datasource.provider.DynamicDataSourceProvider;
    import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty;
    import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties;
    import com.hqhp.salesys.common.constant.HqhpConstant;
    import com.hqhp.salesys.common.properties.HqhpProperties;
    import com.hqhp.salesys.common.utils.DesDelphi;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Component;
    
    import javax.sql.DataSource;
    import java.io.File;
    import java.util.Map;
    
    /**
    * @author xucj
    * @date 2022/08/11/16:37
    * 

    * 自定义yml文件动态数据源解析类 * 处理数据库密码从指定文件获取密码字段并解密设置到上下文中 */ @Component public class MyYmlDynamicDataSourceProvider extends AbstractDataSourceProvider implements DynamicDataSourceProvider { @Autowired private HqhpProperties hqhpProperties; private DynamicDataSourceProperties properties; public MyYmlDynamicDataSourceProvider(DynamicDataSourceProperties properties) { this.properties = properties; } @Override public Map loadDataSources() { Map dataSourcePropertiesMap = this.properties.getDatasource(); DataSourceProperty dataSourceProperty = dataSourcePropertiesMap.get(HqhpConstant.MASTER); if(dataSourceProperty != null){ File file = new File(hqhpProperties.getCretPath() + HqhpConstant.DB_FILE); if(file.isFile()){ FileReader fileReader = FileReader.create(file); dataSourceProperty.setPassword(DesDelphi.decrypt(fileReader.readString(), HqhpConstant.DB_SECRET_KEY)); } } return this.createDataSourceMap(dataSourcePropertiesMap); } }

    • 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
    • 47
    • 48
    • 49
  • 相关阅读:
    【面试经典150 | 数组】买卖股票的最佳时机
    HTML表格与表单
    基于深度学习的三维重建从入门实战教程 原理讲解 源码解析 实操教程课件下载
    会议信息管理系统SSM记录(四)
    java.util.IllegalFormatConversionException: f != java.lang.String 问题解决!
    一文了解优先考虑结果的以「意图」为中心的 Intent-Centric 架构
    Linux——centos7.4磁盘空间调整分配
    一、8086
    企业集中监控体系思路及架构
    ElasticSearch之路
  • 原文地址:https://blog.csdn.net/qq_15076569/article/details/128145663