加密Spring加载的Properties文件

转自: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); 

        } 
}
 
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://10.87.30.32:3306/tdmc_leizm 
jdbc.user=root 
#jdbc.password=123456 
jdbc.password=tAeE2ib1ILE=
 
加密算法就不公开了。

 

你可能感兴趣的:(properties)