原文转自:http://blog.sina.com.cn/s/blog_451f596201014zdh.html
Spring 加载Properties 文件,加密用户名、密码
目标:要加密spring的jdbc配置文件的密码口令。
实现思路:重写加载器的方法,做到偷梁换柱,在真正使用配置之前完成解密。
1、扩展
package com.lavasoft.freamwork.ext.spring;
import com.lavasoft.freamwork.common.ThreeDES;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
import java.util.Properties;
public class PropertyPlaceholderConfigurerExt extends PropertyPlaceholderConfigurer{
@Override
protected void processProperties(ConfigurableListableBeanFactory beanFactory, Properties props)
throws BeansException {
String password = props.getProperty("jdbc.password");
if (password != null) {
//解密jdbc.password属性值,并重新设置
props.setProperty("jdbc.password", ThreeDES.getDesString(password));
}
super.processProperties(beanFactory, props);
}
}
2、配置
<!-- 不加密时候使用 -->
<!--<context:property-placeholder location="classpath:jdbc.properties,classpath:tdmc.properties"/>
-->
<!-- 加密时候使用 -->
<bean id="propertyConfig" class="com.lavasoft.freamwork.ext.spring.PropertyPlaceholderConfigurerExt">
<property name="locations">
<list>
<value>classpath:jdbc.properties</value>
<value>classpath:tdmc.properties</value>
</list>
</property>
</bean>
3、jdbc配置文件
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/mysql
jdbc.user=root
#jdbc.password=123456
jdbc.password=SFFDLKD