1. 程式人生 > >Properties類和如何操作屬性

Properties類和如何操作屬性

protected 詳細 否則 conf provider 工廠 工廠方法 {} val

Properties類
繼承關系
java.lang.Object
java.util.Dictionary<K,V>
java.util.Hashtable<Object,Object>
java.util.Properties
所有已實現的接口:
Serializable, Cloneable, Map<Object,Object>
直接已知子類:
Provider

public class Propertiesextends Hashtable<Object,Object>
Properties 類表示了一個持久的屬性集。Properties 可保存在流中或從流中加載。屬性列表中每個鍵及其對應值都是一個字符串。
一個屬性列表可包含另一個屬性列表作為它的“默認值”;如果未能在原有的屬性列表中搜索到屬性鍵,則搜索第二個屬性列表。
此類是線程安全的:多個線程可以共享單個 Properties 對象而無需進行外部同步

System.getenv() 方法是獲取指定的環境變量的值。
System.getenv(String str) 接收參數為任意字符串,當存在指定環境變量時即返回環境變量的值,否則返回null。
System.getProperty() 是獲取系統的相關屬性,包括文件編碼、操作系統名稱、區域、用戶名等,此屬性一般由jvm自動獲取,不能設置。
System.getProperty(String str) 接收參數為任意字符串,當存在指定屬性時即返回屬性的值,否則返回null。
public class Environment extends PropertiesLoaderSupport implements FactoryBean<Properties>{
public Properties getObject() throws Exception {}
}
ConfigurableApplicationContext ctx = new ClassPathXmlApplicationContext(getContextFilename(args));
ctx.registerShutdownHook();
//使用自定義工廠方法,返回的是一個對象。前面的博客有詳細說明
Properties prtis = (Properties) ctx.getBean("environmentFactoryBean");
System.out.println(prtis.getProperty("jdbcUrl"));
Enumeration en = prtis.propertyNames();
/* while(en.hasMoreElements()){
String key = (String) en.nextElement();
String value = prtis.getProperty(key);
System.out.println(key + " = " + value);
}*/
Map env = System.getenv();
System.out.println(env.toString());
java.util 接口 Enumeration<E>
所有已知子接口:
NamingEnumeration<T>
所有已知實現類:
StringTokenizer
public interface Enumeration<E>
實現 Enumeration 接口的對象,它生成一系列元素,一次生成一個。連續調用 nextElement 方法將返回一系列的連續元素。
例如,要輸出 Vector<E> v 的所有元素,可使用以下方法:
for (Enumeration<E> e = v.elements(); e.hasMoreElements();)
System.out.println(e.nextElement());
PropertiesLoaderSupport類有一個重要的protected void loadProperties(Properties props)方法,
查看它的註釋,可以知道該方法的作用是將PropertyPlaceholderConfigurer 中locations屬性所定義的屬性文件的內容讀取到props入參對象中。

Properties類和如何操作屬性