首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Spring Boot读取配置文件的几种方式

Spring Boot读取配置文件的几种方式

作者头像
Java旅途
发布2020-07-17 10:37:55
发布2020-07-17 10:37:55
1.5K0
举报
文章被收录于专栏:Java旅途Java旅途

Spring Boot获取文件总的来说有三种方式,分别是@Value注解,@ConfigurationProperties注解和Environment接口。这三种注解可以配合着@PropertySource来使用,@PropertySource主要是用来指定具体的配置文件。

@PropertySource解析

  • value():指定配置文件
  • encoding():指定编码,因为properties文件的编码默认是ios8859-1,读取出来是乱码
  • factory():自定义解析文件类型,因为该注解默认只会加载properties文件,如果想要指定yml等其他格式的文件需要自定义实现。

一、@Value注解读取文件

新建两个配置文件config.properties和configs.properties,分别写入如下内容:

新增一个类用来读取配置文件

如果想要读取yml文件,则我们需要重写DefaultPropertySourceFactory,让其加载yml文件,然后在注解@PropertySource上自定factory。代码如下:

二、Environment读取文件

配置文件我们继续用上面的两个,定义一个类去读取配置文件

三、@ConfigurationProperties读取配置文件

@ConfigurationProperties可以将配置文件直接映射成一个实体类,然后我们可以直接操作实体类来获取配置文件相关数据。

新建一个yml文件,当然properties文件也没问题

代码语言:javascript
复制
zhbin:
  config:
    web-configs:
      name: Java旅途
      age: 20

新建实体类用来映射该配置

  • 「prefix = "zhbin.config"用来指定配置文件前缀」

如果需要获取list集合,则做以下修改即可。

代码语言:javascript
复制
zhbin:
  config:
    web-configs:
      - name: Java旅途
        age: 20
      - name: Java旅途2
        age: 202

经验与坑

  • properties文件默认使用的是iso8859-1,并且不可修改
  • yml文件的加载顺序高于properties,但是读取配置信息的时候会读取后加载的
  • @PropertySource注解默认只会加载properties文件
  • @PropertySource注解可以与任何一种方式联合使用
  • 简单值推荐使用@Value,复杂对象推荐使用@ConfigurationProperties

< END >

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java旅途 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • @PropertySource解析
    • 一、@Value注解读取文件
    • 二、Environment读取文件
    • 三、@ConfigurationProperties读取配置文件
  • 经验与坑
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档