详细深入的理解Properties集合使用

简介: properties集合使用及Spring依赖注入之properties

一、properties集合

1、Properties类介绍

JDK API文档描述:

       Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载 。属性列表中每个键及其对应值都是一个字符串。


       一个属性列表可包含另一个属性列表作为它的“默认值”;如果未能在原有的属性列表中搜索到属性键,则搜索第二个属性列表。


       因为Properties 继承于 Hashtable,所以可对 Properties 对象应用 put 和 putAll 方法。但不建议使用这两个方法,因为它们允许调用者插入其键或值不是 String 的项。相反,应该使用 setProperty 方法。如果在“不安全”的 Properties 对象(即包含非 String 的键或值)上调用 store 或 save 方法,则该调用将失败。类似地,如果在“不安全”的 Properties 对象(即包含非 String 的键)上调用 propertyNames 或 list 方法,则该调用将失败。


总结:Properties是Hashtable集合的子类,也是线程安全的。

   Properties 类表示了一个持久的属性集。 Properties可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。


2、Properties类的特点

继承于Hashtable,是线程安全的键值对存储结构。java.util.Properties 集合 extends Hashtableimplements Map


Properties可保存在流中或从流中加载。


只能保存字符串的键值对。


该集合不能写泛型


可以持久化的属性集。键值可以存储到集合中,也可以存储到硬盘、U盘等,store 把流中临时的数据 持久化到硬盘中存储


唯一的一个和IO流有关的技术结合使用


load把硬盘中的文件(键值对) 读取到 集合中


3、properties集合方法

image.png


4、properties集合方法具体使用


/**
 * @author 王恒杰
 * @version 1.0
 * @date 2021/11/10 19:53
 * @email 1078993387@qq.com
 * @Address 天津
 * @Description:properties相关集合类
 */
public class PropertiesTest {
    @Test
    public void PropertiesFileTest() throws IOException {
        //创建properties集合对象
        Properties pro = new Properties();
        //    设计键值对
        pro.setProperty("1", "a");
        pro.setProperty("2", "b");
        pro.setProperty("3", "c");
        // 据键值对获取值
        String value = pro.getProperty("1");
        System.out.println(value);
        System.out.println("--------------");
        //不常用的遍历方法
        Set<String> namesSet = pro.stringPropertyNames();
        for (String name : namesSet) {
            System.out.println(name);
        }
        System.out.println("--------------");
        //读取属性文件中的内容(Properties集合特有方法)
        FileReader fr = new FileReader("pro.properties");
        pro.load(fr);
        fr.close();
        System.out.println("--------------");
        //    把键值对写入文件中(Properties集合特有的方法)
        FileOutputStream fos = new FileOutputStream("pro2.properties");
        pro.store(fos, "Comments");
        fos.close();
    }
}


二、Spring依赖注入之properties

properties类型

 //properties集合
    private Properties properties;
   //properties集合遍历
        for(Map.Entry entry:properties.entrySet()){
            System.out.println(entry.getKey()+":"+entry.getValue());
        }


properties类型注入

 

<property name="properties">
            <props>
                <prop key="key1">value1</prop>
                <prop key="key2">value2</prop>
                <prop key="key3">value3</prop>
                <prop key="key4">value4</prop>
            </props>
        </property>

     


相关文章
|
存储 消息中间件 缓存
一套十万级TPS的IM综合消息系统的架构实践与思考
下面就由我来介绍一下我所负责的公司IM综合消息系统所经历的架构设计历程,以及架构设计过程中的一些思路和总结,希望能给你带来启发。
731 0
一套十万级TPS的IM综合消息系统的架构实践与思考
|
存储 Java 测试技术
【通用行业开发部】阿里开源TransmittableThreadLocal使用经验记录
本文章主要记录我在一次业务优化中,使用线程池带来的子父线程值传递问题,及使用TransmittableThreadLocal来解决该问题的经验,并对TransmittableThreadLocal原理做些梳理。
|
存储 关系型数据库 MySQL
环比、环比增长率、同比、同比增长率 ,占比,Mysql 8.0 实例(最简单的方法之一)(sample database classicmodels _No.2 )
环比、环比增长率、同比、同比增长率 ,占比,Mysql 8.0 实例(最简单的方法之一)(sample database classicmodels _No.2 )
510 1
|
机器学习/深度学习 人工智能 自然语言处理
SCoRe: 通过强化学习教导大语言模型进行自我纠错
谷歌研究人员提出了一种名为自我纠错强化学习(SCoRe)的新方法,旨在使大型语言模型(LLMs)能够在无需外部反馈的情况下即时纠正自己的错误。SCoRe通过在线多轮强化学习训练模型,解决了传统自我纠错方法的局限性。实验结果显示,SCoRe在数学问题求解和代码生成任务上显著提升了模型的自我纠错能力,相较于基准模型和其他方法表现出色。此外,SCoRe还可与其他推理优化技术结合,进一步提升模型性能。尽管存在迭代次数限制和计算成本等局限性,SCoRe为未来研究提供了新的方向,有望推动AI系统的自主性和适应性发展。
673 3
|
10月前
|
存储 弹性计算 运维
海量日志接入 Elasticsearch Serverless 应用降本70%以上
本文将探讨在日志场景下,使用阿里云Elasticsearch Serverless相较于基于ECS自建Elasticsearch集群的成本与性能优势,展示如何通过Serverless架构实现高达 70%以上的成本节约。
545 0
|
机器学习/深度学习 缓存 运维
智能化运维:机器学习在故障预测与自动修复中的应用
随着信息技术的飞速发展,企业系统日益复杂,传统运维模式面临巨大挑战。智能化运维作为一种新兴趋势,通过集成机器学习算法,实现对系统故障的预测和自动修复,显著提高运维效率与准确性。本文深入探讨了智能化运维的概念、关键技术及其在故障预测和自动修复方面的应用实例,旨在为读者提供一种科学严谨、数据导向的视角,理解智能化运维的价值与实践路径。
570 27
JVM进阶调优系列(5)CMS回收器通俗演义一文讲透FullGC
本文介绍了JVM中CMS垃圾回收器对Full GC的优化,包括Stop the world的影响、Full GC触发条件、GC过程的四个阶段(初始标记、并发标记、重新标记、并发清理)及并发清理期间的Concurrent mode failure处理,并简述了GC roots的概念及其在GC中的作用。
|
前端开发 架构师 算法
技术一号位的方法论《个人篇》——人成长的本质以及如何构建个人成长路线图
不论你是职场新人还是35岁的职场“老人”,成长是每个职场人都绕不开的话题,同时也是贯穿每个人职业生涯的痛点。本文主要帮助读者建立起对个人成长的认知,然后在此认知的基础上让大家理解成长的本质,最终通过文章的引导,来帮助读者完成个人成长路线图的确定以及落地实践。
13983 3
技术一号位的方法论《个人篇》——人成长的本质以及如何构建个人成长路线图
|
数据采集 运维 监控
ARMS自定义监控
【8月更文挑战第25天】
403 3