spring 中如何讀取properties的中屬性資訊
阿新 • • 發佈:2019-01-09
1.spring 中提供了一個可以獲取properties檔案屬性的類。PropertyPlaceholderConfigurer類
下面的一個例項是通過繼承該類來獲取檔案的屬性值。
1.宣告一個類:CustomizedPropertyConfigurer
private static Map<String, Object> ctxPropertiesMap;
@Override
protected void processProperties(ConfigurableListableBeanFactory beanFactory, Properties props) throws BeansException {
super.processProperties(beanFactory, props);
// load properties to ctxPropertiesMap
ctxPropertiesMap = new HashMap<String, Object>();
for (Object key : props.keySet()) {
String keyStr = key.toString();
String value = props.getProperty(keyStr);
ctxPropertiesMap.put(keyStr, value);
}
}
// static method for accessing context properties
public static Object getContextProperty(String name) {
return ctxPropertiesMap.get(name);
}
getContextProperty(String name)可以直接通過properties中的屬性鍵值就可以獲取值。
宣告一個監聽器:在容器初始化的時候獲取屬性檔案的值,放置到context中。
public class ContextCommonDataListener implements ServletContextListener {
private ServletContext context = null;
public ContextCommonDataListener() {
}
@Override
public void contextInitialized(ServletContextEvent event) {
this.context = event.getServletContext();
String basePath = Toolkits.getServerBasePath();
context.setAttribute("basePath", basePath);
log.info("ContextCommonDataListener,獲取伺服器basepath:" + basePath);
String footerhtml = (String) CustomizedPropertyConfigurer.getContextProperty("footer.html");
context.setAttribute("footer", footerhtml);
}
@Override
public void contextDestroyed(ServletContextEvent event) {
this.context = null;
}
}
最後直接在頁面上使用ER表示式就可以獲取該屬性檔案的內容。