| 12345678910111213141516171819202122232425262728293031323334353637 | package com.cn.tianji.config;import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty;import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties;import com.cn.tianji.common.Sm4Util;import lombok.extern.slf4j.Slf4j;import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;import org.springframework.context.annotation.Configuration;import javax.annotation.PostConstruct;import javax.annotation.Resource;@Configuration@ConditionalOnClass(DynamicDataSourceProperties.class)@Slf4jpublic class DataSourceDecryptConfig {    @Resource    private DynamicDataSourceProperties properties;    @PostConstruct    public void decryptDataSourcePasswords() {        log.warn("开始解密数据源密码...");        // 解密主数据源密码        decryptPassword(properties.getDatasource().get(properties.getPrimary()));        // 解密所有从数据源密码        properties.getDatasource().values().forEach(this::decryptPassword);        log.warn("解密数据源密码完成...");    }    private void decryptPassword(DataSourceProperty property) {        String password = property.getPassword();        if (password != null && password.startsWith(Sm4Util.ENC_PREFIX)) {            property.setPassword(Sm4Util.decrypt(password));        }    }}
 |