文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-02-24 11:48

关注

前言

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") // 配置文件的前缀
@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方法读取配置文件中的的值。

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集合的所有值了

第二种方式使用@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集合的所有值了

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

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

1、list类型的yml配置文件中,需要使用"-"来组成一个列表集合。

2、yml中的前缀没有层级限制,如果是多层级,比如这里的demo/code,在java类中配置ConfigurationProperties注解的prefix就写作"demo.code"

3、属性名称在yml文件中支持连字符"-",比如four-span,在java类中配置属性就需要转为驼峰式,fourSpan。

4、java类属性需要配置set,get方法。

总结

到此这篇关于springboot读取yml文件中的list列表、数组、map集合和对象的文章就介绍到这了,更多相关springboot读取yml文件内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

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

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

软考中级精品资料免费领

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

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

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

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

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

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

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