转自:http://lavasoft.blog.51cto.com/62575/807502/
加密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;
/**
* 重写PropertyPlaceholderConfigurer的processProperties方法实现
*
* @author leizhimin 2012-03-14 16:47
*/
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);
}
}
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;
/**
* 重写PropertyPlaceholderConfigurer的processProperties方法实现
*
* @author leizhimin 2012-03-14 16:47
*/
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>
<!--<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://10.87.30.32:3306/tdmc_leizm
jdbc.user=root
#jdbc.password=123456
jdbc.password=tAeE2ib1ILE=
jdbc.url=jdbc:mysql://10.87.30.32:3306/tdmc_leizm
jdbc.user=root
#jdbc.password=123456
jdbc.password=tAeE2ib1ILE=
加密算法就不公开了。
加密Spring加载的Properties文件
本文介绍了如何在Spring框架中加密加载的Properties文件中的密码口令,通过重写PropertyPlaceholderConfigurer的方法实现偷梁换柱,在真正使用配置之前完成解密。
3994

被折叠的 条评论
为什么被折叠?



