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

2023-05-16 0 3,651

目录

前言

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

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

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

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

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方法。

总结

资源下载此资源下载价格为1小猪币,终身VIP免费,请先
由于本站资源来源于互联网,以研究交流为目的,所有仅供大家参考、学习,不存在任何商业目的与商业用途,如资源存在BUG以及其他任何问题,请自行解决,本站不提供技术服务! 由于资源为虚拟可复制性,下载后不予退积分和退款,谢谢您的支持!如遇到失效或错误的下载链接请联系客服QQ:442469558

:本文采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可, 转载请附上原文出处链接。
1、本站提供的源码不保证资源的完整性以及安全性,不附带任何技术服务!
2、本站提供的模板、软件工具等其他资源,均不包含技术服务,请大家谅解!
3、本站提供的资源仅供下载者参考学习,请勿用于任何商业用途,请24小时内删除!
4、如需商用,请购买正版,由于未及时购买正版发生的侵权行为,与本站无关。
5、本站部分资源存放于百度网盘或其他网盘中,请提前注册好百度网盘账号,下载安装百度网盘客户端或其他网盘客户端进行下载;
6、本站部分资源文件是经压缩后的,请下载后安装解压软件,推荐使用WinRAR和7-Zip解压软件。
7、如果本站提供的资源侵犯到了您的权益,请邮件联系: 442469558@qq.com 进行处理!

猪小侠源码-最新源码下载平台 Java教程 springboot读取yml文件中的list列表、数组、map集合和对象方法实例 http://www.20zxx.cn/705214/xuexijiaocheng/javajc.html

猪小侠源码,优质资源分享网

常见问题
  • 本站所有资源版权均属于原作者所有,均只能用于参考学习,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,建议提前注册好百度网盘账号,使用百度网盘客户端下载
查看详情

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务