zoukankan      html  css  js  c++  java
  • Spring源码学习-PropertyPlaceholderHelper

    转载:http://my.oschina.net/ydsakyclguozi/blog/465526

    1. CustomPropertyConfigurer.java

    package propertyconfig;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Properties;
    import java.util.Map.Entry;
    import org.springframework.beans.BeansException;
    import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
    import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
    import org.springframework.util.PropertyPlaceholderHelper;

    public class CustomPropertyConfigurer extends PropertyPlaceholderConfigurer{
      private static Map<String,String> properties = new HashMap<String,String>();
      protected void processProperties(
        ConfigurableListableBeanFactory beanFactoryToProcess,
        Properties props) throws BeansException {
        // cache the properties
        PropertyPlaceholderHelper helper = new PropertyPlaceholderHelper(
        DEFAULT_PLACEHOLDER_PREFIX, DEFAULT_PLACEHOLDER_SUFFIX, DEFAULT_VALUE_SEPARATOR, false);
        for(Entry<Object,Object> entry:props.entrySet()){
          String stringKey = String.valueOf(entry.getKey());
          String stringValue = String.valueOf(entry.getValue());

          //用属性文件键值属性props替换字符串stringValue
          stringValue = helper.replacePlaceholders(stringValue, props);
          properties.put(stringKey, stringValue);
        }
        super.processProperties(beanFactoryToProcess, props);
      }

      public static Map<String, String> getProperties() {
        return properties;
      }

      public static String getProperty(String key){
        return properties.get(key);
      }
    }
    2. applicationContext.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"
    default-lazy-init="true" default-autowire="byName" default-init-method="" default-destroy-method="">

    <bean id="propertyConfigurer" class="propertyconfig.CustomPropertyConfigurer">
      <property name="locations">
        <list>
          <value>classpath:propertyconfig/project.properties</value>
        </list>
      </property>
    </bean>
    </beans>


    3. project.properties

    site=iteye
    blog=antlove
    url=${site}/${blog}
    4. Main.java测试类

    package propertyconfig;
    import java.util.Map;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    public class Main {
      public static void main(String[] args) {
        new ClassPathXmlApplicationContext("propertyconfig/applicationContext.xml");

        Map<String,String> properties = CustomPropertyConfigurer.getProperties();

        System.out.println(properties);
      }
    }

  • 相关阅读:
    温故而知新 js 点击空白处关闭气泡
    javascript 打印错误信息 catch err
    ajax application/json 的坑
    nodejs 的好基友:pm2
    有道翻译 / 百度翻译Api
    PHP 正则表达式
    php 正则替换
    github get 请求指定页面的代码
    H5 input 聚焦 置顶
    autoHotKey 一些脚本积累
  • 原文地址:https://www.cnblogs.com/fanguangdexiaoyuer/p/5788432.html
Copyright © 2011-2022 走看看