1. 程式人生 > >Java中如何獲取spring中配置的properties屬性檔案內容

Java中如何獲取spring中配置的properties屬性檔案內容

1、通過spring配置properties檔案

<bean id="propertyConfigurer"
class="com.tjsoft.base.util.CustomizedPropertyPlaceholderConfigurer">
<property name="ignoreResourceNotFound" value="true" />
<property name="locations">
<list>
<value>/WEB-INF/config/jdbc.properties</value>
<value>/WEB-INF/config/mail.properties</value>
<value>/WEB-INF/config/system.properties</value>
</list>
</property>
</bean>

2、自定義類CustomizedPropertyPlaceholderConfigurer

import java.util.HashMap;
import java.util.Map;
import java.util.Properties;


import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;


/**
 * 自定義PropertyPlaceholderConfigurer返回properties內容
 * 
 * @author LHY 2012-02-24
 * 
 */
public class CustomizedPropertyPlaceholderConfigurer extends
PropertyPlaceholderConfigurer {


private static Map<String, Object> ctxPropertiesMap;


@Override
protected void processProperties(
ConfigurableListableBeanFactory beanFactoryToProcess,
Properties props) throws BeansException {
super.processProperties(beanFactoryToProcess, props);
ctxPropertiesMap = new HashMap<String, Object>();
for (Object key : props.keySet()) {
String keyStr = key.toString();
String value = props.getProperty(keyStr);
ctxPropertiesMap.put(keyStr, value);
}
}


public static Object getContextProperty(String name) {
return ctxPropertiesMap.get(name);
}


}

這樣就可以通過CustomizedPropertyPlaceholderConfigurer類來獲取properties屬性檔案中的內容了

3、如何獲取屬性檔案的內容

String host =  (String) CustomizedPropertyPlaceholderConfigurer.getContextProperty("mail.smtp.host");