package com.embracesource.config; import java.util.Enumeration; import java.util.Properties; import org.apache.log4j.Logger; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer; public class DynamicPropertiesSpringConfigurer extends PropertyPlaceholderConfigurer { private static final Logger logger = Logger .getLogger(DynamicPropertiesSpringConfigurer.class); private DynamicPropertiesHelperFactory helperFactory; private String[] propertiesKeys; public void setHelperFactory(DynamicPropertiesHelperFactory helperFactory) { this.helperFactory = helperFactory; } public void setPropertiesKeys(String[] propertiesKeys) { this.propertiesKeys = propertiesKeys; } protected void processProperties( ConfigurableListableBeanFactory beanFactoryToProcess, Properties props) throws BeansException { if (this.propertiesKeys != null) { for (String propsKey : this.propertiesKeys) { DynamicPropertiesHelper helper = this.helperFactory .getHelper(propsKey); if (helper != null) { Enumeration<String> keys = helper.getPropertyKeys(); while (keys.hasMoreElements()) { String key = (String) keys.nextElement(); props.put(key, helper.getProperty(key)); } } else { logger.warn("配置不存在: " + propsKey); } } } super.processProperties(beanFactoryToProcess, props); } }