1、复写processProperties方法实现
package com.*.*;
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 PropertyPlaceholderConfigurerTest extends PropertyPlaceholderConfigurer {
protected void processProperties(ConfigurableListableBeanFactory beanFactory, Properties props)
throws BeansException {
String password = props.getProperty("jdbc.password");
String username = props.getProperty("jdbc.username");
try {
if (password != null) {
//解密jdbc.password属性值,并重新设置
//Crypt.decrypt:自己编写的对应的解密方法(本文采用aes算法,aes网上有很多就不写出来了)
props.setProperty("jdbc.password", Crypt.decrypt(password));
}
if (username != null) {
props.setProperty("jdbc.username", Crypt.decrypt(username));
}
super.processProperties(beanFactory, props);
} catch (Exception e) {
e.printStackTrace();
}
}
}
<!-- 不加密时候使用使用spring自带的 -->
2、xml配置
<!-- 不加密时候使用使用spring自带的 -->
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:jdbc.properties</value> <value>classpath:roles.properties</value>
</list>
</property>
</bean>
<!-- 加密时候使用自己复写过的 -->
<bean id="propertyConfigurer"
class="com.*.*.PropertyPlaceholderConfigurerTest">
<property name="locations">
<list>
<value>classpath:jdbc.properties</value>
<value>classpath:roles.properties</value>
</list>
</property>
</bean>
3、原文
jdbc.username=F4B2DEB6F8FA201C5783A959CE1C3180
jdbc.password=F4B2DEB6F8FA201C5783A959CE1C3180