简化配置文件读取:封装并获取属性
本文档主要介绍了如何在Java程序中实现一个封装良好的方法来处理配置文件操作,特别是针对`config.properties`这样的文本文件。核心知识点主要包括以下几个方面: 1. **配置文件路径的获取**: - `MainLocation`类中定义了一个静态常量`DEFAULT_PROPERTIES_PATH`,它使用`getResource()`方法获取当前类的类路径(即jar或class文件的路径),然后追加`config.properties`,以确保找到配置文件的准确位置。 2. **多线程安全的读取方法**: - `readLocation(String key)`方法负责根据给定的键(key)从配置文件中读取值。该方法采用`synchronized`关键字,确保在多线程环境下访问`ppsMap`时的线程安全性。如果找不到指定的`Properties`对象,会捕获并处理`FileNotFoundException`异常。 - 如果`pps`对象为`null`,则返回`null`,否则通过`getProperty(key)`获取属性值。 3. **缓存和性能优化**: - 使用哈希映射`Map<String, Properties>`(`ppsMap`)来存储已经加载过的`Properties`对象,避免频繁地打开和关闭文件。这样,当需要多次读取同一配置文件时,可以快速从缓存中获取,提高程序性能。 4. **异常处理与重定向**: - 在`readLocation`方法中,如果遇到`FileNotFoundException`,会捕获并创建一个自定义的`SystemExceptionInterceptor`实例。这个拦截器尝试跳转到一个URL(可能是远程服务或错误页面),进一步处理异常情况,同时打印堆栈跟踪,以便于调试。 5. **私有辅助方法`getPropertyFile`**: - 提供了一个私有静态方法`getPropertyFile`,用于实际读取指定路径的`Properties`文件。如果`propertyFilePath`为`null`,则直接返回`null`。该方法抛出`FileNotFoundException`异常,表明文件不存在或无法打开。 总结,这个封装的读取配置文件方法提供了对配置数据的统一管理和访问,简化了应用程序对配置文件的操作,并且通过缓存机制提升了性能。开发者可以直接调用这些方法,无需关心底层文件的细节,增强了代码的可维护性和可扩展性。
public static final String DEFAULT_PROPERTIES_PATH = MainLocation.class.getResource("/").getPath()+"config.properties";
private static Map<String, Properties> ppsMap = new HashMap<String, Properties>();
/**
* 读取默认文件的配置信息,读key返回value
*
* @param key
* @return value
* @throws FileNotFoundException
* @throws FileNotFoundException
*/
public synchronized static final String readlocation(String key) {
synchronized (ppsMap) {
Properties pps = null;
try {
pps = getPropertyFile(DEFAULT_PROPERTIES_PATH);
} catch (FileNotFoundException e) {
SystemExceptionInterceptor se = new SystemExceptionInterceptor();
try {
se.jumpURL();
} catch (IOException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}
return pps == null ? null : pps.getProperty(key);
下载后可阅读完整内容,剩余2页未读,立即下载
- 粉丝: 1
- 资源: 15
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦