Java代码读取properties配置文件的示例代码

 更新时间:2023年05月03日 08:54:19   作者:Login  
这篇文章主要介绍了Java代码读取properties配置文件,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

读取properties配置文件

package com.easycrud.utils;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import java.util.concurrent.ConcurrentHashMap;
/**
 * @BelongsProject: EasyCrud
 * @BelongsPackage: com.easycrud.utils
 * @Author: xpx
 * @Email: 2436846019@qq.com
 * @CreateTime: 2023-05-02  16:05
 * @Description: 读取properties配置文件工具类
 * @Version: 1.0
 */
public class PropertiesUtils {
    private static Properties props = new Properties();
    private static Map<String,String> PROPER_MAP = new ConcurrentHashMap<String, String>();
    /**
     * 项目初始化时就去读取配置文件
     */
    static {
        InputStream is = null;
        try{
            is = PropertiesUtils.class.getClassLoader().getResourceAsStream("application.properties");
            props.load(is);
            Iterator<Object> iterator = props.keySet().iterator();
            while (iterator.hasNext()){
                String key = (String) iterator.next();
                PROPER_MAP.put(key,props.getProperty(key));
            }
        }catch (Exception e){
        }finally {
            if (is != null){
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    /**
     * 对外提供方法通过key取值
     * @param key
     * @return
     */
    public static String getString(String key) {
        return PROPER_MAP.get(key);
    }
    /**
     * 测试能否成功取值
     * @param args
     */
    public static void main(String[] args) {
        System.out.println("测试打印:"+getString("db.driver.name"));
    }
}

新手引导

Properties

Properties 继承于 Hashtable。表示一个持久的属性集.属性列表中每个键及其对应值都是一个字符串。

ConcurrentHashMap

HashTable是一个线程安全的类,它使用synchronized来锁住整张Hash表来实现线程安全,即每次锁住整张表让线程独占,相当于所有线程进行读写时都去竞争一把锁,导致效率非常低下。ConcurrentHashMap可以做到读取数据不加锁,并且其内部的结构可以让其在进行写操作的时候能够将锁的粒度保持地尽量地小,允许多个修改操作并发进行,其关键在于使用了锁分段技术。它使用了多个锁来控制对hash表的不同部分进行的修改。对于JDK1.7版本的实现, ConcurrentHashMap内部使用段(Segment)来表示这些不同的部分,每个段其实就是一个小的Hashtable,它们有自己的锁。只要多个修改操作发生在不同的段上,它们就可以并发进行。JDK1.8的实现降低锁的粒度,JDK1.7版本锁的粒度是基于Segment的,包含多个HashEntry,而JDK1.8锁的粒度就是HashEntry(首节点)。

static

static代码块一般用于初始化类中的静态变量,该静态代码块在类加载过程中的初始化阶段执行,并且只执行一次。

InputStream

字节输入流。

try...cache...finally

try{

​ 可能发生异常的代码

}catch(可能发生的异常类型 异常对象名){

​ 当前异常类型的处理方式

}finally{

​ 一定要执行的代码

}

IOException

IOException 是在使用流、文件和目录访问信息时引发的异常的基类

e.printStackTrace()

在命令行打印异常信息在程序中出错的位置及原因。

Class.getClassLoader().getResourceAsStream()

Class是当前类的Class对象,Class.getClassLoader()是获取当前类的类加载器。类加载器的大概作用是当需要使用一个类时,加载该类的".class"文件,并创建对应的class对象,将class文件加载到虚拟机的内存。getResourceAsStream()是获取资源的输入流。类加载器默认是从classPath路径加载资源。

load()

Properties的方法是逐行读取properties配置文件,分隔成两个字符串key和value,将他们放进Properties对象中。

Iterator

迭代器 it 的三个基本操作是 next 、hasNext 和 remove。

调用 it.next() 会返回迭代器的下一个元素,并且更新迭代器的状态。

调用 it.hasNext() 用于检测集合中是否还有元素。

调用 it.remove() 将迭代器返回的元素删除。

keySet()

如果有一个Map对象,可以使用 map.keySet()方法获取所有的key值。

A=xxx.iterator()

获取迭代器保存在A中。

到此这篇关于Java代码读取properties配置文件的文章就介绍到这了,更多相关Java读取properties文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 深入学习SpringCloud之SpringCloud简介

    深入学习SpringCloud之SpringCloud简介

    Spring Cloud是一个一站式的开发分布式系统的框架,为开发者提供了一系列的构建分布式系统的工具集,本文给大家介绍springcloud的相关知识,感兴趣的朋友跟随一起看看吧
    2021-04-04
  • SpringBoot 自定义注解实现涉密字段脱敏

    SpringBoot 自定义注解实现涉密字段脱敏

    关于数据脱敏,网上的文章都是硬编码规则,比如对身份证,手机号,邮件地址等固定写法脱敏。本文在此基础上,拓展动态从数据库查出涉密关键字执行脱敏操作。感兴趣的同学可以参考阅读
    2023-03-03
  • Seata AT模式TransactionHook被删除探究

    Seata AT模式TransactionHook被删除探究

    这篇文章主要为大家介绍了Seata AT模式TransactionHook被删除探究,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • SpringBoot使用Minio进行文件存储的实现

    SpringBoot使用Minio进行文件存储的实现

    本文主要介绍了SpringBoot使用Minio进行文件存储的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Java将字符串转化为数组的两种方法

    Java将字符串转化为数组的两种方法

    Java中的String类是一种特殊的字符串,它可以被用于处理字符串,Java中的String类也可以将字符串转换为数组,下面这篇文章主要给大家介绍了关于Java将字符串转化为数组的两种方法,需要的朋友可以参考下
    2023-05-05
  • Java中的异常Exception与处理方式详解

    Java中的异常Exception与处理方式详解

    这篇文章主要介绍了Java中的异常Exception与处理方式详解, Java语言中,将程序执行中发生的不正常情况称为"异常"(开发过程中的语法错误和逻辑错误不是异常),需要的朋友可以参考下
    2024-01-01
  • Java用局域网实现聊天室功能

    Java用局域网实现聊天室功能

    这篇文章主要为大家详细介绍了Java用局域网实现聊天室功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • IDEA maven上传速度很慢的解决办法

    IDEA maven上传速度很慢的解决办法

    maven上传的速度很慢,排除网络原因,需要检查配置,本文主要介绍了IDEA maven上传速度很慢的解决办法,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • Mybatis-plus数据权限DataPermissionInterceptor实现

    Mybatis-plus数据权限DataPermissionInterceptor实现

    本文主要介绍了Mybatis-plus数据权限DataPermissionInterceptor实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • 在SpringBoot项目中使用Java8函数式接口的方法示例

    在SpringBoot项目中使用Java8函数式接口的方法示例

    在Spring Boot项目中,Java 8 的函数式接口广泛用于实现各种功能,如自定义配置、数据处理等,函数式接口在Spring Boot中非常有用,本文展示了在SpringBoot项目中使用Java8的函数式接口的方法示例,需要的朋友可以参考下
    2024-03-03

最新评论