Spring加载加密的配置文件

Posted 二十六度半

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring加载加密的配置文件相关的知识,希望对你有一定的参考价值。


一、继承并实现自己的属性文件配置器类

/**
 * 带加密的Spring属性配置文件扩展类
 * 加密方式:AES
 * @author simon
 *
 */
public class EncryptPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer {

    //指定需要加密的属性
    private String[] propertyNames = {"db.password"};

    /**
     * 解密指定propertyName的属性值
     * @param propertyName
     * @param propertyValue
     * @return
     */
    @Override
    protected String convertProperty(String propertyName, String propertyValue) {
        //过滤出需要解密的属性
        for (String p : propertyNames) {
            if (p.equalsIgnoreCase(propertyName)) {
                try {
                   //返回AES解密后的字符串
                   return new String(SymmetricCryptoUtil.decryptAESWithDefaultKey(EncodeUtil.decodeBase64(propertyValue)));
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        return super.convertProperty(propertyName, propertyValue);
    }

}

 

二、Spring中配置以自定义的属性文件配置器类来加载加密后的配置文件

<!-- 加载加密后的配置文件 -->
<bean class="com.bounter.mybatis.extension.EncryptPropertyPlaceholderConfigurer">
  <property name="locations">
    <list>
      <value>classpath:db.properties</value>
    </list>
  </property>
</bean>

 

三、将配置文件中的特殊属性用相同的算法和密钥加密

db.driver=
db.url=
db.username=root
#AES encrypt,Base64 encode
db.password=jFYmt2f57RHhzItYDhWiSA==

 

以上是关于Spring加载加密的配置文件的主要内容,如果未能解决你的问题,请参考以下文章

spring 国际化 js怎么设置

springboot使用ImportResource注解加载spring配置文件(传智播客代码)

数据库链接信息加密

spring动态加载(刷新)配置文件 [复制链接]

使用对称加密来加密Spring Cloud Config配置文件

使用对称加密来加密Spring Cloud Config配置文件