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

作者:Login 时间:2021-11-06 07:44:28 

读取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中。

来源:https://www.cnblogs.com/LoginX/p/Login_X72.html

标签:Java,读取,properties
0
投稿

猜你喜欢

  • Android 如何获取手机总内存和可用内存等信息

    2023-07-27 13:11:42
  • 通过实例解析spring环绕通知原理及用法

    2022-12-26 23:33:20
  • MyBatis在SQL语句中如何获取list的大小

    2021-08-15 12:09:55
  • Java8新特性之接口中的默认方法和静态方法

    2021-08-21 07:25:43
  • Java链表(Linked List)基本原理与实现方法入门示例

    2021-10-12 05:49:14
  • MybatisPlus使用@TableId主键id自增长无效的解决

    2023-01-30 15:59:41
  • Spring中BeanFactory与FactoryBean接口的区别详解

    2022-06-17 11:22:22
  • Java实现将图片上传到webapp路径下 路径获取方式

    2023-07-10 12:44:13
  • Netty分布式ByteBuf使用命中缓存的分配解析

    2023-08-31 11:33:49
  • Java程序员必须知道的5个JVM命令行标志

    2023-11-11 15:30:36
  • Java编程中的检查型异常与非检查型异常分析

    2023-11-04 13:08:38
  • Java为实体类动态添加属性的方法详解

    2023-09-01 05:31:43
  • 浅谈JVM垃圾回收有哪些常用算法

    2022-02-28 16:51:56
  • java 字符串截取的三种方法(推荐)

    2021-05-24 06:49:52
  • 使用JavaWeb webSocket实现简易的点对点聊天功能实例代码

    2023-10-29 00:14:17
  • java堆排序概念原理介绍

    2021-08-30 12:31:58
  • Java将String字符串带括号转成List的简单方法

    2022-10-26 18:20:17
  • java实现多线程的两种方式继承Thread类和实现Runnable接口的方法

    2022-07-24 04:27:18
  • JAVA JVM面试题总结

    2021-07-12 04:55:13
  • Spring定时任务使用及如何使用邮件监控服务器

    2023-01-12 16:38:58
  • asp之家 软件编程 m.aspxhome.com