需求
现有一个时区配置集合(key=value 形式),类似如下:
|
|
需要将其保存在一个文件中并在程序启动时将其加载为 Map,时区映射为 ZoneId 类型。同时参考 Spring Boot 支持配置文件在 resources 目录下、jar 同级目录、config/ 目录下。
分析
配置文件选择
配置文件的选择,yaml、properties、ini、txt 等。Spring Boot 支持 yaml 和 properties,优选这两种类型,yaml 更适合嵌套层次的配置,所以我们选用 properties 保存时区配置。
文件加载
需要参考 Spring Boot 的加载顺序,classpath 目录、classpath:config/、jar 同级目录、jar 同级目录 config/ 子目录。 如果仅需以优先级为顺序, 加载一处的配置文件,那么在各个路径进行文件判断,以优先级最高的文件进行加载,其他文件则自动忽略。不过 Spring Boot 的配置是多个目录下配置文件的合集, 因此我们此处也以合集为例。
解析方式
默认情况下配置无公共前缀,所以我们无法使用 @PropertySource
+ @ConfigurationProperties
的组合。
当然,如果可以修改配置文件添加个公共前缀,也能使用这个组合。例如:
|
|
加载 properties 文件可使用工具类:
|
|
对于 classpath 路径,我们可以使用 ClassPathResource
,对于 jar 同级目录,使用 FileSystemResource
。
编码
|
|
感谢您的耐心阅读!来选个表情,或者留个评论吧!