文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

springboot读取yml文件中的list列表、数组、map集合和对象

2023-10-26 07:30

关注

前言
springboot配置文件yml类型简单的风格,十分受大家的欢迎,支持字符string类型,支持列表list类型,支持集合map类型,支持数组array类型,支持类对象类型,下面我们来实战下这些形式的配置如何取值

application.yml定义list集合

第一种方式使用@ConfigurationProperties注解获取list集合的所有值

type:  code:    status:      - 200      - 300      - 400      - 500

编写配置文件对应的实体类,这里需要注意的是,定义list集合,先定义一个配置类Bean,然后使用注解@ConfigurationProperties注解来获取list集合值,这里给大家讲解下相关注解的作用

如下图所示

package com.o2o.data;import lombok.Data;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.Configuration;import java.util.List;@Component@ConfigurationProperties(prefix = "type.code") // 配置文件的前缀@Datapublic class TypeCodeConfig {    private List status;    public void setStatus(List status){        this.status = status;    }    public List getStatus(){        return status;    }}

然后在要使用的地方自动注入,我是直接在启动类中读取这个list,需要注意,使用yml中配置的list需要先将对象注入,然后通过get方法读取配置文件中的的值。

package com.o2o;import com.o2o.data.TypeCodeConfig;import org.mybatis.spring.annotation.MapperScan;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.CommandLineRunner;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})@MapperScan("com.o2o.mapper")public class AutoTestApplication implements CommandLineRunner {public static void main(String[] args) {SpringApplication.run(AutoTestApplication.class, args);}@Autowiredprivate TypeCodeConfig typeCodeConfig;@Overridepublic void run(String... args) throws Exception {System.out.println(typeCodeConfig.getStatus());

启动springboot我们已经从控制台成功读取到yml文件中list集合的所有值了
在这里插入图片描述
第二种方式使用@value注解获取list集合的所有值
yml文件配置如下

student:  ids:    - 7    - 8    - 9

然后创建一个实体类

@Datapublic class Student {    @Value("${student.ids}")    private List<Integer> ids;}

再新建一个对list属性的配置类

@Component@ConfigurationProperties(prefix = "student")@Datapublic class TypeCodeConfig {private List<Integer> ids;   public void setIds(List<Integer> ids) {       this.ids = ids;   }      public  List<Integer> getIds(){       return ids;}

在启动类中注入

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})@MapperScan("com.o2o.mapper")public class AutoTestApplication implements CommandLineRunner {public static void main(String[] args) {SpringApplication.run(AutoTestApplication.class, args);}@Autowiredprivate TypeCodeConfig typeCodeConfig;@Overridepublic void run(String... args) throws Exception {System.out.println(typeCodeConfig.getIds());}

启动springboot我们已经从控制台成功读取到yml文件中list集合的所有值了
在这里插入图片描述

application.yml定义数组类型

yml配置文件如下图所示

dataSync:  enable: true  type:     - "1"    - "2"    - "3"

通过@value注解获取数组值

@Value("${dataSync.enable.type}") private String[] type;

也可以通过创建配置类bean,使用@ConfigurationProperties注解获取,如下图所示:

@Data@Component@ConfigurationProperties(prefix = "dataSync.enable") // 配置 文件的前缀public class InterceptorPathBean{      private String[] type;}

yml文件还可以存放对象和对象的集合,使用方法与基本类型类似。
简单举例:

interceptorconfig:  path:    maps:      name: 小明      age: 24

通过创建配置类bean,使用@ConfigurationProperties注解获取map值,如下图所示

@Data@Component@ConfigurationProperties(prefix = "interceptorconfig.path") // 配置 文件的前缀public class InterceptorPathBean{    private Map<String , String> maps;}
student:  id: 1  name: Bruce  gender: male
students:   - id: 1    name: Bruce    gender: male  - id: 2    name: ...    ...

这里我给大家总结一些需要重要的点:

1、list类型的yml配置文件中,需要使用"-"来组成一个列表集合。2、yml中的前缀没有层级限制,如果是多层级,比如这里的demo/code,在java类中配置ConfigurationProperties注解的prefix就写作"demo.code"3、属性名称在yml文件中支持连字符"-",比如four-span,在java类中配置属性就需要转为驼峰式,fourSpan。4、java类属性需要配置set,get方法。

来源地址:https://blog.csdn.net/weixin_42274846/article/details/128155678

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯