zoukankan      html  css  js  c++  java
  • 解密Spring加载的Properties文件

      Spring的框架中,org.springframework.beans.factory.config.PropertyPlaceholderConfigurer类可以将.properties(key/value形式)文件中 
    一些动态设定的值(value),在XML中替换为占位该键($key$)的值, 
    .properties文件可以根据客户需求,自定义一些相关的参数,这样的设计可提供程序的灵活性。

    xml中的配置文件

    <bean id="propertyConfigurer" 
    class="com.datasure.util.filter.EncryptablePropertyPlaceholderConfigurer"> 
    <property name="locations"> 
    <list><value>classpath:jdbc.properties</value></list> 
    </property> 
    </bean>
    public class EncryptablePropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer {
        private static final String key = "helloworld";
    
        protected void processProperties(ConfigurableListableBeanFactory beanFactory, Properties props)
            throws BeansException {
                try {
                    Des des = new Des();
                    String username = props.getProperty("jdbc.username");
                    if (username != null) {
                        props.setProperty("jdbc.username", des.Decrypt(username, des.hex2byte(key)));
                    }
                    
                    String password = props.getProperty("jdbc.password");
                    if (password != null) {
                        props.setProperty("jdbc.password", des.Decrypt(password, des.hex2byte(key)));
                    }
                    
                    String url = props.getProperty("jdbc.url");
                    if (url != null) {
                        props.setProperty("jdbc.url", des.Decrypt(url, des.hex2byte(key)));
                    }
                    
                    String driverClassName = props.getProperty("jdbc.driverClassName");
                    if(driverClassName != null){
                        props.setProperty("jdbc.driverClassName", des.Decrypt(driverClassName, des.hex2byte(key)));
                    }
                    
                    super.processProperties(beanFactory, props);
                } catch (Exception e) {
                    e.printStackTrace();
                    throw new BeanInitializationException(e.getMessage());
                }
            }
        }

    通过如上配置就可以对配置文件进行解密操作

  • 相关阅读:
    selenium之 关闭窗口close与quit
    如何去掉xmind的备注红色下划线
    cmd里面快速粘贴复制的设置方式以及初始位置设置
    Python中的空格和缩进问题总结
    python 单例实现
    logging 简单使用
    CTypes
    类装饰器使用
    Django admin
    Django 视图
  • 原文地址:https://www.cnblogs.com/shinubi/p/5302878.html
Copyright © 2011-2022 走看看