枚举单例实现配置文件的读取

使用enum关键字来实现单例模式的好处是可以提供序列化机制,即使是在面对复杂的序列化或者反射攻击的时候也能防止多次实例化。
例如:
1、配置文件 config.properties 中有以下属性:

      test.case = www.baidu.com

2、枚举类关键代码如下:

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * 
 * @ClassName: PropertiesSingle 
 * @Description: TODO(单例获取配置文件信息) 
 * @author chang.weng 
 * @date 2017年6月13日 下午3:34:35 
 *
 */
public enum PropertiesSingle {
    INSTANCE;
    private volatile Properties configuration = new Properties();
    public void init() {
        //根路径为classpath
        InputStream is = this.getClass().getResourceAsStream("/config/config.properties");
        if (is != null) {
            try {
                this.configuration.clear();
                this.configuration.load(is);
            } catch (IOException e) {
            } finally {
                try {
                    is.close();
                } catch (Throwable t) {}
            }
        }
    }
    public String getConfigValue(String key) {
          return this.configuration.getProperty(key);
    }
}

3、如何调用?

        PropertiesSingle.INSTANCE.init();
        String finalPropertiesStr = PropertiesSingle.INSTANCE.getConfigValue("test.case");
    

4、总结:

简单安全
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,890评论 18 139
  • title: "Swift 中枚举高级用法及实践"date: 2015-11-20tags: [APPVENTUR...
    guoshengboy阅读 2,618评论 0 2
  • 1.单例模式概述 (1)引言 单例模式是应用最广的模式之一,也是23种设计模式中最基本的一个。本文旨在总结通过Ja...
    曹丰斌阅读 3,002评论 6 47
  • 单例模式(SingletonPattern)一般被认为是最简单、最易理解的设计模式,也因为它的简洁易懂,是项目中最...
    成热了阅读 4,291评论 4 34
  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 5,590评论 0 4