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

这篇具有很好参考价值的文章主要介绍了springboot读取yml文件中的list列表、数组、map集合和对象方法实例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

type:

  code:

    status:

      - 200

      - 300

      - 400

      - 500

编写配置文件对应的实体类,这里需要注意的是,定义list集合,先定义一个配置类Bean,然后使用注解@ConfigurationProperties注解来获取list集合值,这里给大家讲解下相关注解的作用
@Component 将实体类交给Spring管理@ConfigurationProperties(prefix = “type.code”) 读取yml文件中的list@Data 自动生成getter和setter方法 如下图所示

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") // 配置文件的前缀

@Data

public class TypeCodeConfig {

    private List<String> status;

    public void setStatus(List<String> status){

        this.status = status;

    }

    public List<String> getStatus(){

        return status;

    }

}

然后在要使用的地方自动注入,我是直接在启动类中读取这个list,需要注意,使用yml中配置的list需要先将对象注入,然后通过get方法读取配置文件中的的值。
@Autowired private TypeCodeConfig typeCodeConfig; 使用注解将对象注入System.out.println(typeCodeConfig.getStatus()); 调用getter方法读取值

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);

    }

    @Autowired

    private TypeCodeConfig typeCodeConfig;

    @Override

    public void run(String... args) throws Exception {

        System.out.println(typeCodeConfig.getStatus());

启动springboot我们已经从控制台成功读取到yml文件中list集合的所有值了

spring配置文件配置list,spring boot,list,spring


第二种方式使用@value注解获取list集合的所有值
yml文件配置如下

student:

  ids:

    - 7

    - 8

    - 9

然后创建一个实体类

@Data

public class Student {

    @Value("${student.ids}")

    private List<Integer> ids;

}

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

@Component

@ConfigurationProperties(prefix = "student")

@Data

public 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);

    }

    @Autowired

    private TypeCodeConfig typeCodeConfig;

     

    @Override

    public void run(String... args) throws Exception {

        System.out.println(typeCodeConfig.getIds());

    }

启动springboot我们已经从控制台成功读取到yml文件中list集合的所有值了

spring配置文件配置list,spring boot,list,spring



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文件还可以存放对象和对象的集合,使用方法与基本类型类似。
简单举例:
定义map集合配置

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: ...

    ...

最后传递List里面包裹Map

wx:
  mp:
    report:
      - map1:
          templateCode: acticityReport
          thing1: C语言程序设计
          thing17: 升级公开课
          date13: 2019-01-12 16:00
          thing20: 课程简介
          thing9: 请务必带好课程教材
      - map2:
          templateCode: examine
          thing1: 创想家比赛
          thing2: 小学高年级组
          thing3: 张三
          thing5: 您已成功报名
          thing6: 选拔赛

配置类

@Data
@Component
@ConfigurationProperties(prefix = "wx.mp")
public class WxReportProperties {
    private List<Map<String,Object>> report;
}

调用

@Autowired
private WxReportProperties wxReportProperties;
List<Map<String,Object>> configs =  wxReportProperties.getReport();

这里我给大家总结一些需要重要的点:
1、list类型的yml配置文件中,需要使用"-"来组成一个列表集合。
2、yml中的前缀没有层级限制,如果是多层级,比如这里的demo/code,在java类中配置ConfigurationProperties注解的prefix就写作"demo.code"
3、属性名称在yml文件中支持连字符"-",比如four-span,在java类中配置属性就需要转为驼峰式,fourSpan。
4、java类属性需要配置set,get方法。文章来源地址https://www.toymoban.com/news/detail-696819.html

到了这里,关于springboot读取yml文件中的list列表、数组、map集合和对象方法实例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • springboot的配置文件如何配置可以实现多个yml相互读取

    在Spring Boot中,可以通过多种方式来实现配置文件的相互读取和组合。如果你想要在一个Spring Boot应用中使用多个YAML( .yml )配置文件,并且希望这些配置文件可以相互读取或者互相覆盖某些配置,你可以采用以下几种方法: 1. 使用 spring.config.import 属性(Spring Boot 2.4及以上版

    2024年02月20日
    浏览(38)
  • mybatis双重foreach实现遍历map中的两个list数组

    前端传值时可能会有多个字段传递过来,需要后台将这多个字段拼接为 name in (? , ?) and name1 in (? , ?) and name2 in (? , ?) 作为sql查询条件…如下图sql语句,即实现多个and xxx in(?,?,?) 拼接 前端传递的是json字符串,json中name和infos是一对具有对应关系的对象,且json中会有多条这种对象

    2024年02月15日
    浏览(26)
  • 【SpringBoot】两种配置文件, 详解 properties 和 yml 的语法格式, 使用方式, 读取配置

    各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你: 📕 JavaSE基础: 基础语法, 类和对象, 封装继承多态, 接口, 综合小练习图书管理系统等 📗 Java数据结构: 顺序表, 链表, 堆, 二叉树, 二叉搜索树, 哈希表等 📘 JavaEE初阶: 多线程, 网络编程, TCP/IP协议, HTTP协议

    2024年02月10日
    浏览(40)
  • springboot拿到yml文件中的配置,决绝将配置写在代码里

    写你对应的文件 测试类

    2024年02月15日
    浏览(38)
  • Springboot yml 复杂对象的二维数组

    有两种形式可以表达这种需求 一:通过建立一个二维维数组来表述: 1 Grid类 @Data @AllArgsConstructor @NoArgsConstructor public class Grid {      Long x; // 栅格中心位置 x 值      Long y; // 栅格中心位置 y 值      String tag; //栅格中心位置的 rfid 标签或者 二维码标签      GridType gridType;

    2024年02月16日
    浏览(26)
  • 在springboot中怎么在yml里配置Map<String, Object >类型数据?

    在Spring Boot的`application.yml`或`application.properties`配置文件中配置`MapString, Object`类型的数据可以使用 YAML 格式。以下是如何配置的示例: 在这个示例中,我们定义了一个名为`my.map`的`MapString, Object`,它包含了不同类型的值,包括字符串、整数和嵌套的`Map`。 然后,你可以在Spr

    2024年04月10日
    浏览(33)
  • springboot 注入配置文件中的集合 List

    在使用 springboot 开发时,例如你需要注入一个 url 白名单列表,你可能第一想到的写法是下面这样的: application.yml 然而,我们天真的以为,这样是没有问题的,实际不然, 这是一种错误的行为 ,本文截稿时 Spring 还是不支持直接使用 @Value 的方式注入集合的。 这种需求查看

    2024年02月05日
    浏览(29)
  • SpringBoot读取配置文件中的内容

    配置文件application.yml: Environment 是 springboot 核心的环境配置接口,它提供了简单的方法来访问应用程序属性,包括系统属性、操作系统环境变量、命令行参数、和应用程序配置文件中定义的属性等等。 Springboot 程序启动加载流程里,会执行SpringApplication.run中的prepareEnvironmen

    2024年01月21日
    浏览(45)
  • Flutter中Map、List数组的常用方法

    Dart语言是Flutter开发的必备语言,官方地址如下:Dart:https://dart.cn/ 使用dart工具来运行这些常用的方法,工具:https://dartpad.cn 在Dart中,Map用来存储对像类型的数据,List与Set用来存储数组类型的数据。 Map的创建实例如下: 创建有一个有初始值的Map,代码如下: 根据List数据来

    2024年02月08日
    浏览(33)
  • hutool 读取每个sheet,数据转成List<Map<>>的格式

    1.接收上传的excel文件流,取出第一个sheet 2.ImportExcelUtil 工具类

    2024年02月13日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包