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 Hashtable<k,v>implements Map<k,v>
-
Properties可保存在流中或从流中加载。
-
只能保存字符串的键值对。
-
该集合不能写泛型
-
可以持久化的属性集。键值可以存储到集合中,也可以存储到硬盘、U盘等,store 把流中临时的数据 持久化到硬盘中存储
-
唯一的一个和IO流有关的技术结合使用
-
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>