PropertyPlaceholderConfigurer 类processProperties()方法自定义数据库用户名和密码解密与替换

由于项目需要,不能暴露配置文件数据库账号密码,可使用AES加密进行用户名和密码/在配置文件中填写虚假密码/为空(根据实际情况选择)

jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://xxxx:3306/mybatis?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useUnicode=true&useSSL=false&autoReconnect=true&failOverReadOnly=false&zeroDateTimeBehavior=CONVERT_TO_NULL
#(密文)/(虚假字符)/(空)都可
jdbc.username=eOM3hnWq3bBYg8RRIXXqLw==
#(密文)/(虚假字符)/(空)都可
jdbc.password=/GikNOUbNLFMNEUf2FeZHA==

beans.xml配置

 <!-- 这里需要填自己写的实现类PropertyPlaceholder -->
<bean id="propertyConfigurer" class="com.xxx.xxx.PropertyPlaceholder">
    <property name="locations">
         <list>  
            <value>classpath:jdbc.properties</value>
         </list>
    </property>
</bean>

    <!-- DBCP数据源配置 -->
     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
        <property name="driverClassName" value="${jdbc.driverClassName}" />
        <property name="url" value="${jdbc.url}" />
    </bean>

实现类

package com.archive.util;

import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
public class PropertyPlaceholder extends PropertyPlaceholderConfigurer{
     private static Map<String,String> propertyMap;

        @Override
        protected void processProperties(ConfigurableListableBeanFactory beanFactory, Properties props) throws BeansException  {
           
            
            String username = props.getProperty("jdbc.username");
            String password = props.getProperty("jdbc.password");
         //如果采用密文模式需要在这里进行解密后填充,下方代码适用使用虚假字符用户名和密码情况。
         //用户名密码加解密方式可自行选择,例AES加解密等;
            if (username != null) {
              //在这里写入真实用户名
                props.setProperty("jdbc.username", "真实用户名");

            }
            if (password != null) {
               //在这里写入真实密码
                props.setProperty("jdbc.password", "真实密码");
            }
            super.processProperties(beanFactory, props);
            
         
        }

      
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

听风看月_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值