由于项目需要,不能暴露配置文件数据库账号密码,可使用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);
}
}