Java Properties資源配置封裝Get
Spring容器注入ConfigurationContext前提下擷取配置檔案變量:
private static final String STRING = ConfigurationContext.getValue("keyName");
封裝如下:
public class ConfigurationContext {
private volatile Properties properties;
private volatile static ConfigurationContext context;
//配置檔案名
private static final String DEFAULT_CONFIG_FILE = "config.properties";
private ConfigurationContext(String fileName) throws IOException {
ClassLoader classLoader = ConfigurationContext.class.getClassLoader();
InputStream resourceAsStream = classLoader.getResourceAsStream(fileName);
if (resourceAsStream == null) {
throw new FileNotFoundException("Cannot find configuration file: " + fileName);
}
this.properties = new Properties();
this.properties.load(resourceAsStream);
}
public static ConfigurationContext init(String fileName) throws IOException {
if (ConfigurationContext.context == null) {
ConfigurationContext.context = new ConfigurationContext(fileName);
}
return ConfigurationContext.context;
}
//Spring容器初始化指定調用方法
public static ConfigurationContext init() throws IOException {
return init(DEFAULT_CONFIGURATION_FILE);
}
//擷取變量 return為字元串 ,可重載return 指定Type類型
public static String getValue(String key) {
isInitialized();
return ConfigurationContext.context.properties.getProperty(key);
}
private static void isInitialized() {
if (ConfigurationContext.context == null) {
throw new RuntimeException("ConfigurationContext instance haven't been initialized");
}
}
}
注入Spring容器需設定:
<!-- 系統配置上下文元件 這裡name對該封裝可有可無 -->
<bean name="configurationContext" class="********.ConfigurationContext"
factory-method="init" >
</bean>