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