加密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);

        }
}
 
2、配置
        
        

        
         < 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=
 
加密算法就不公开了。