• 解密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());
                }
            }
        }

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

  • 相关阅读:
    window.history.go()返回上页的同时刷新"上页"代码
    技术总监谈好的程序员如何写代码
    ASP长文章内容自动分页函数
    ie8下overflow:hidden 无效果
    EXCEL转数据到SQL(已有表结构)
    十六进制转十进制 这么简单 之前都不会
    获得表信息 字段名等
    aspjpeg 打水印
    《几何与代数导引》例2.9
    《几何与代数导引》例2.8
  • 原文地址:https://www.cnblogs.com/shinubi/p/5302878.html
Copyright © 2020-2023  润新知