详细深入的理解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类的特点

  1. 继承于Hashtable,是线程安全的键值对存储结构。java.util.Properties 集合 extends Hashtable<k,v>implements Map<k,v>

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

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

  4. 该集合不能写泛型

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

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

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

3、properties集合方法

方法解释
setProperties(String key,Strign value)设置键值对,等同于map的put方法
getProperties(String key);获取键值对的值,等同于Map中的get方法
stringPropertyNames();获取集合所有keys,返回Set,等同于map中keySet方法
load(InputStream in)
load(Reader r)
加载任意字节或输入流,流对象读取文件的键值对,保存到集合中
store(OutputStream out,String comments)
store(Writer w,String Comments)
存储任意的字节或字符输出流,流对象把properties集合中的键值对写入到属性文件中

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>
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员小王java

学习java的路上,加油!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值