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>