通过单例模式去加载可配置的常量
2016-07-01 10:57
141 查看
前言:一般常量都通过public static final 写死在代码里,如果要想改常量,需要修改代码,很不方便。
现在将常量提出来,放到properties文件里,可以在代码外侧自由修改,简单方便。
下面,我们通过一个简单的单例模式(由Enum实现)来优雅的load properties。
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public enum ConstantConfig {
CONTEXT("context.properties");
private Properties properties = new Properties();
private ConstantConfig(String path) {
InputStream is = ConstantConfig.class.getClassLoader().getResourceAsStream(path);
try {
properties.load(is);
} catch (IOException e) {
e.printStackTrace();
}
}
public String getProperties(String key) {
return properties.getProperty(key);
}
public String getProperties(String key, String value) {
return properties.getProperty(key, value);
}
}
现在将常量提出来,放到properties文件里,可以在代码外侧自由修改,简单方便。
下面,我们通过一个简单的单例模式(由Enum实现)来优雅的load properties。
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public enum ConstantConfig {
CONTEXT("context.properties");
private Properties properties = new Properties();
private ConstantConfig(String path) {
InputStream is = ConstantConfig.class.getClassLoader().getResourceAsStream(path);
try {
properties.load(is);
} catch (IOException e) {
e.printStackTrace();
}
}
public String getProperties(String key) {
return properties.getProperty(key);
}
public String getProperties(String key, String value) {
return properties.getProperty(key, value);
}
}
相关文章推荐
- 与、或、非、异或、运算
- 刷机
- 使用redis避免客户端频繁提交数据
- bzoj 3312: [Usaco2013 Nov]No Change
- 设计模式C++实现(8)——代理模式
- YUV学习之一
- 检查读写权限
- upload临时文件生存周期
- ActiveServices
- AOP中的概念通知、切点、切面、
- 写博客的目的
- mybatis 中的<![CDATA[ ]]>
- HTTP,TCP/IP协议
- 组合练习1
- 再次理解js中的call函数
- 设计模式C++实现(7)——外观模式、组合模式
- #150 – An Example of Using PropertyChanged and CoerceValue Callbacks(PropertyChanged和CoerceValue例子)
- ASP 连接Access数据库的登陆系统
- php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
- 让你流泪的不是毕业,而是无法再重走一次的青春