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

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

  • 相关阅读:
    HDOJ/HDU 2352 Verdis Quo(罗马数字与10进制数的转换)
    HDOJ/HDU 2203 亲和串(简单的判断~Java的indexOf()方法秒)
    HDOJ/HDU 2163 Palindromes(判断回文串~)
    js之函数
    js琐碎知识点
    position
    css属性background
    图片展示失效容错处理
    文字打点
    浮动的一些知识点
  • 原文地址:https://www.cnblogs.com/shinubi/p/5302878.html
Copyright © 2020-2023  润新知