加密Spring加載的Properties文件

加密Spring加載的Properties文件
 
目標:要加密spring的jdbc配置文件的密碼口令。
 
實現思路:重寫加載器的方法,作到偷樑換柱,在真正使用配置以前完成解密。
 
一、擴展
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);

        }
}
 
二、配置
        <!-- 不加密時候使用 -->
        <!-- <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 >
 
三、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=
 
加密算法就不公開了。
相關文章
相關標籤/搜索