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