每天一个实战小技巧,
Properties配置文件
properties配置文件,相信各位小伙伴都不会太陌生,常用Spring的可能会经常看到它,虽说现在更推荐的是使用Yaml配置文件,但是properties配置文件的使用频率也不低
在jdk中有一个直接关连的类Properties,接下来我们来看一下它的用法
1. 配置文件
properties文件的格式比较简单
key = value
: 等号左边的为配置key,右边的为配置value(value值会去除前后的空格)#
:以#
来区分注释
一个基础的配置文件如下
1 | # 测试 |
2. 配置文件加载
对于Properties配置文件,我们可以非常简单的借助Properties
类,来实现配置的加载
1 | public class PropertiesUtil { |
直接使用Properties#config
就可以读取配置文件内容,并赋值到java对象
重点注意:
重点看一下Properties类的继承关系,它的父类是Hashtable, 也就是说它的本质是Map对象
1 | public |
3. Properties对象使用
因为Properties
是继承自Hashtable,而Hashtable是线程安全的Map容器,因此Properties也是线程安全的,同样的,在多线程并发获取配置的时候,它的性能表现也就不咋地了,why?
首先看一下配置获取
1 | // 获取配置属性 |
上面两个方法的使用频率很高,从签名上也很容易知道使用姿势;接下来需要看一下的为啥说并发效率很低
关键点就在第一个方法的super.get()
,它对应的源码正是
1 | public synchronized V get(Object key) { |
方法签名上有synchronized
,所以为啥说并发环境下的性能表现不会特别好也就知道原因了
除了获取配置之外,另外一个常用的就是更新配置
1 | public synchronized Object setProperty(String key, String value) { |
4. 小结
本文介绍的知识点主要是properties配置文件的处理,使用同名的java类来操作;需要重点注意的是Properties类属于Hashtable的子类,同样属于容器的范畴
最后提一个扩展的问题,在SpringBoot的配置自动装载中,可以将配置内容自动装载到配置类中,简单来讲就是支持配置到java bean的映射,如果现在让我们来实现这个,可以怎么整?
系列博文:
- 实战小技巧1:字符串占位替换-JDK版
- 实战小技巧2:数组与list互转
- 实战小技巧3:字符串与容器互转
- 实战小技巧4:优雅的实现字符串拼接
- 实战小技巧5:驼峰与下划线互转
- 实战小技巧6:枚举的特殊用法
- 实战小技巧7:排序比较需慎重
- 实战小技巧8:容器的初始化大小指定
- 实战小技巧9:List.subList使用不当StackOverflowError
- 实战小技巧10:不可变容器
- 实战小技巧11:数组拷贝
- 实战小技巧12:数字格式化
- 实战小技巧13:进制转换很简单
II. 其他
1. 一灰灰Blog: https://liuyueyi.github.io/hexblog
一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛
2. 声明
尽信书则不如,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激
- 微博地址: 小灰灰Blog
- QQ: 一灰灰/3302797840
3. 扫描关注
一灰灰blog