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中对properties属性文件加密及其解密

之前在项目里面连接数据库需要将密码解密,而且连接好好多数据库,并且有的数据库需要解密有的直接连接就可以。 这样代码的可读性特别低,在连接数据库的时候都要现连接:Properties prop = ne...
  • jlnu_wanglei
  • jlnu_wanglei
  • 2016年05月18日 15:05
  • 3006

java spring中对properties属性文件加密及其解密

java spring中对properties属性文件加密及其解密 源代码下载地址:http://www.zuidaima.com/share/1781588957400064.htm...
  • yaerfeng
  • yaerfeng
  • 2016年04月27日 09:41
  • 1138

java spring中对properties属性文件加密及其解密

java spring中对properties属性文件加密及其解密,代码下载地址:http://www.zuidaima.com/share/1781588957400064.htm...
  • yaerfeng
  • yaerfeng
  • 2014年05月22日 10:06
  • 9965

读取项目中properties文件中的账号密码进行加密解密

项目需求 : 所有认证数据,例如密码,不论是在储存、传输中都必须妥善保护,以防泄露或被未获授权修改。在安全认证中的Fortify 静态代码分析器的扫描中,如果密码明文放在文件中是肯定过不去的。 ...
  • dsiori
  • dsiori
  • 2017年01月04日 17:29
  • 3097

java spring中对properties属性文件加密及其解密

java spring中对properties属性文件加密及其解密,代码下载地址:http://www.zuidaima.com/share/1781588957400064.htm...
  • yaerfeng
  • yaerfeng
  • 2014年05月22日 10:06
  • 9965

java spring中对properties属性文件加密及其解密

java spring中对properties属性文件加密及其解密 源代码下载地址:http://www.zuidaima.com/share/1781588957400064.htm...
  • yaerfeng
  • yaerfeng
  • 2016年04月27日 09:41
  • 1138

Spring中对properties属性文件加密及其解密

之前在项目里面连接数据库需要将密码解密,而且连接好好多数据库,并且有的数据库需要解密有的直接连接就可以。 这样代码的可读性特别低,在连接数据库的时候都要现连接:Properties prop = ne...
  • jlnu_wanglei
  • jlnu_wanglei
  • 2016年05月18日 15:05
  • 3006

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

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

采用DES加密方式对properties配置文件敏感信息加密处理

由于项目的需要,要求对配置文件中的敏感信息进行加密处理,例如数据库用户名密码之类的 处理方式如下: MyWebConstant /** * 对外接口,管理公共常量 * 对...
  • lw9324
  • lw9324
  • 2017年04月25日 16:06
  • 332

SpringMVC加载配置Properties文件的几种方式

最近开发的项目使用了SpringMVC的框架,用下来感觉SpringMVC的代码实现的非常优雅,功能也非常强大, 网上介绍Controller参数绑定、URL映射的文章都很多了,写这篇博客主要总...
  • white__cat
  • white__cat
  • 2016年12月21日 16:46
  • 1715
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring加载Properties配置文件的加密解密处理
举报原因:
原因补充:

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