Spring加载Properties配置文件的加密解密处理

原创 2016年06月01日 16:34:24

需求场景:加密Properties配置文件中的数据库连接字串和用户名、密码

实现思路:重写PropertyPlaceholderConfigurer类中的processProperties方法,在读取配置信息之前实现解密


一、PropertyPlaceholderConfigurerExt.java

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanInitializationException;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;

import com.neusoft.icelake.common.constant.PropertyConstant;

/**
 * <br>Title:PropertyPlaceholderConfigurerExt
 * <br>Description:PropertyPlaceholderConfigurer扩展
 * <br>Date:2016-6-1
 */
public class PropertyPlaceholderConfigurerExt extends PropertyPlaceholderConfigurer {
    protected void processProperties(ConfigurableListableBeanFactory beanFactory, Properties props)
            throws BeansException {
        try {
            String jdbc_url = props.getProperty(PropertyConstant.JDBC_URL);
            if (jdbc_url != null)
                props.setProperty(PropertyConstant.JDBC_URL, CryptoUtil.decrypt(jdbc_url));

            String jdbc_username = props.getProperty(PropertyConstant.JDBC_USERNAME);
            if (jdbc_username != null)
                props.setProperty(PropertyConstant.JDBC_USERNAME, CryptoUtil.decrypt(jdbc_username));

            String jdbc_password = props.getProperty(PropertyConstant.JDBC_PASSWORD);
            if (jdbc_password != null)
                props.setProperty(PropertyConstant.JDBC_PASSWORD, CryptoUtil.decrypt(jdbc_password));
            super.processProperties(beanFactory, props);
        } catch (Exception e) {
            e.printStackTrace();
            throw new BeanInitializationException(e.getMessage());
        }
    }
}


二、spring-context-mybatis.xml

	<!--  
	<context:property-placeholder ignore-unresolvable="true" location="classpath:config.properties" />
	-->
    <bean id="propertyConfigurer" class="com.neusoft.icelake.common.util.PropertyPlaceholderConfigurerExt">  
            <property name="locations">
                <list>
                    <value>classpath:config.properties</value>
                </list>
            </property>
    </bean>

三、config.properties

#===== Database sttings =====#
#sybase database setting
jdbc.type=sybase
jdbc.driver=com.sybase.jdbc2.jdbc.SybDriver
#jdbc.url=jdbc:sybase:Tds:erp08.minmetals.com.cn:5000/standard?charset=cp936
#jdbc.username=STT
#jdbc.password=ststst

jdbc.url=954215B307C15FB87A194CA77F27EC96C7AE6A3352F85136ECCC621EB64C2D76F6B82F91A554F6F4CF5AF36C4128E989D45B6CE0296D2946C776071E401A409A2CF96945BF9FC5FF
jdbc.username=F7B511DD811821ED
jdbc.password=428A99F379BE4883

#jdbc.testSql=SELECT 'x'
jdbc.testSql=select getdate()

四、PropertyConstant.java

public class PropertyConstant {
    /**
     * <br>Description:数据库连接字串
     * <br>Date:2016-6-1
     */
    public static final String JDBC_URL = "jdbc.url";

    /**
     * <br>Description:登录名
     * <br>Date:2016-6-1
     */
    public static final String JDBC_USERNAME = "jdbc.username";

    /**
     * <br>Description:密码
     * <br>Date:2016-6-1
     */
    public static final String JDBC_PASSWORD = "jdbc.password";

}

五、加密算法

就不公开了

版权声明:本文为博主原创文章,欢迎转载,转载请注明作者

相关文章推荐

spring下jdbc配置文件进行加密解密

最近做一个项目,安全上有点要求,就是要对数据库相关的配置进行加密,配置文件如下: #加密前#datasource.type=mysql #datasource.driverClassName=...

IE6、IE7、IE8、IE9兼容性问题解决办法

前言 为了帮助确保你的网页在所有未来的IE版本都有一致的外观,IE8引入了文件兼容性。在IE6中引入一个增设的兼容性模式,文件兼容性使你能够在IE呈现你的网页时选择特定编译模式。 新的IE为了...

Java实现properties配置文件加密解密

Java实现properties配置文件加密解密 在 JavaEE 配置文件中,例如 XML 或者 properties 文件,由于某些敏感信息不希望普通人员看见,则可以采用加密的方式存储,程序读...

Spring 管理下的web项目,对Properties文件重要参数的加密解密处理(续)

之前有篇文章是对应properties文件加密的,但是上面的加密算法生成得是byte字节码。所以今天给大家重新写个类。...

Spring 管理下的web项目,对Properties文件重要参数的加密解密处理

javaWeb项目中往往我们会把jdbc/redis等的属性配置放在properties文件中,但是又不想让非开发人员看到某些重要配置信息,所以需要对这样类似与用户名、密码等的字段进行加密,但是Spr...

Spring读取properties文件加密解密

文章概要:数据源配置文件database.properties里面填写加密后的密文,程序读取配置文件的时候进行相应的解密操作后再注入使用。此功能主要用于生产环境。 使用的spring版本:4.2.5,...

winform对项目的配置文件加密解密

  • 2011年05月11日 14:59
  • 130KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring加载Properties配置文件的加密解密处理
举报原因:
原因补充:

(最多只允许输入30个字)