springboot yml文件自定义配置的读取、使用 字符串 数组 对象 集合

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

.yml 配置

# 自定义开发环境端口 默认本地 9801
# serverPort: 9801
spring:
  profiles: dev
# 环境的配置
server:
  port: 9801



# 自定义对象/配置
student:
  name: 李四
  age: 25
  jobs: #数组方式1                                      @ConfigurationProperties 方式可以获取; @Value方式、Environment方式获取不到
    - java
      linux
      123
  loves: [看电影,玩游戏,游泳,aaaa,456] # 数组方式2        @ConfigurationProperties 方式可以获取; @Value方式、Environment方式获取不到
  books: 水浒,西游,红楼梦,三国 # 数组方式3                @所有方式都可获取
  frands: # List方式1                                  @ConfigurationProperties 方式可以获取; @Value方式、Environment方式获取不到
    - 李雷
      韩梅梅
      本山
  familys: [李父,李牧,李姐,李弟,456] # List方式2         @ConfigurationProperties 方式可以获取; @Value方式、Environment方式获取不到
  organ: 眼,#耳,.#口,鼻 # List方式3                        @所有方式都可获取


# 对象集合                                              @ConfigurationProperties 方式可以获取并封装成对象集合
users:
  user:
    - name: tom
      age: 18
    - name: 韩梅梅
      age: 15

controller代码

import com.tencent.gateway.entity.Student;
import com.tencent.gateway.entity.User;
import com.tencent.gateway.entity.Users;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import org.springframework.core.env.Environment;
import org.springframework.beans.factory.annotation.Value;

import java.util.Arrays;
import java.util.List;


@RestController
@RequestMapping("/test")
public class TestController {

    //方式1:对象中使用 @ConfigurationProperties 加载配置到对象属性中
    @Autowired
    private Student student;//配置文件对应的对象
    @Autowired
    private Users users;//配置文件对应的对象集合

    @GetMapping("/test1")
    public Object test1(){
        System.out.println("方式1:@ConfigurationProperties 获取配置:");
        System.out.println();
        System.out.println(student.name);
        System.out.println(student.age);
        System.out.println(Arrays.toString(student.jobs));
        System.out.println(Arrays.toString(student.loves));
        System.out.println(Arrays.toString(student.books));
        System.out.println(student.frands.toString());
        System.out.println(student.familys.toString());
        System.out.println(student.organ.toString());

        System.out.println();
        System.out.println("usersList:");
        for (User user: users.user){
            System.out.println(user.name);
            System.out.println(user.age);
        }

        return "success";
    }



    //方式2:使用 Environment
    @Autowired
    Environment env;

    @GetMapping("/test2")
    public Object test2(){
        System.out.println("方式2:Environment 获取配置:");
        System.out.println();
        System.out.println(env.getProperty("server.port"));
        System.out.println(env.getProperty("student.name"));
        System.out.println(env.getProperty("student.age"));
        System.out.println(env.getProperty("student.jobs"));    //获取不到
        System.out.println(env.getProperty("student.loves"));   //获取不到
        System.out.println(env.getProperty("student.books"));   //          可以获取
        System.out.println(env.getProperty("student.frands"));  //获取不到
        System.out.println(env.getProperty("student.familys")); //获取不到
        System.out.println(env.getProperty("student.organ"));   //          可以获取
        return "success";
    }



    //方式3:使用 @Value 映射 获取指定配置参数值, 冒号后的1111为默认值
    @Value("${server.port:1111}")
    private String port;
    @Value("${student.name}")
    public String name;
    @Value("${student.age}")
    private int age;
    @Value("${student.jobs:}")
    private String[] jobs;
    @Value("${student.loves:}")
    private String[] loves;
    @Value("${student.books:}")
    private String[] books;
    @Value("${student.frands:a,a,a,a}")//冒号后指定默认值
    private List<String> frands;
    @Value("${student.familys:}")
    private List<String> familys;
    @Value("#{'${student.organ}'.split(',')}") //使用指定分割符分割字符串数组(部分字符不支持,比如 .)
    private List<String> organ;
    @Value("#{'${student.organ}'.split('#')}") //使用指定分割符分割字符串数组(部分字符不支持,比如 .)
    private List<String> organ2;

    @GetMapping("/test3")
    public Object test3(){
        System.out.println("方式3:@Value 映射 获取配置:");
        System.out.println();
        System.out.println(port);
        System.out.println(name);
        System.out.println(age);
        System.out.println(Arrays.toString(jobs));  //获取不到
        System.out.println(Arrays.toString(loves)); //获取不到
        System.out.println(Arrays.toString(books)); //          可以获取
        System.out.println(frands.toString());      //获取不到
        System.out.println(familys.toString());     //获取不到

        System.out.println();
        System.out.println("organ:(逗号分割)");
        System.out.println(organ.toString());       //          可以获取
        for (String organSplit: organ){
            System.out.println(organSplit);
        }

        System.out.println();
        System.out.println("organ2:(号分割)");
        System.out.println(organ2.toString());      //          可以获取
        for (String organSplit: organ2){
            System.out.println(organSplit);
        }

        return "success";
    }
}

实体类

Student.java

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.List;

@Component
@ConfigurationProperties(prefix = "student")
public class Student {

    public String name;

    public int age;

    public String[] jobs;

    public String[] loves;

    public String[] books;

    public List<String> frands;

    public List<String> familys;

    public List<String> organ;


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String[] getJobs() {
        return jobs;
    }

    public void setJobs(String[] jobs) {
        this.jobs = jobs;
    }

    public String[] getLoves() {
        return loves;
    }

    public void setLoves(String[] loves) {
        this.loves = loves;
    }

    public List<String> getFrands() {
        return frands;
    }

    public void setFrands(List<String> frands) {
        this.frands = frands;
    }

    public List<String> getFamilys() {
        return familys;
    }

    public void setFamilys(List<String> familys) {
        this.familys = familys;
    }

    public String[] getBooks() {
        return books;
    }

    public void setBooks(String[] books) {
        this.books = books;
    }

    public List<String> getOrgan() {
        return organ;
    }

    public void setOrgan(List<String> organ) {
        this.organ = organ;
    }
}

Users.java

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.List;

@Component
@ConfigurationProperties(prefix = "users")
public class Users {

    public List<User> user; //自动将users.user下的所有数组封装到User对象集合中

    public List<User> getUser() {
        return user;
    }

    public void setUser(List<User> user) {
        this.user = user;
    }
}

User.java

public class User {
    public String name;
    public int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

方式一、

http://localhost:9801/test/test1

yml文件配置数组,spring boot,yml

方式二、

http://localhost:9801/test/test2

yml文件配置数组,spring boot,yml

方式三、

http://localhost:9801/test/test3

yml文件配置数组,spring boot,yml

参考:

SpringBoot:yml文件详解-CSDN博客

https://www.jb51.net/article/216769.htm文章来源地址https://www.toymoban.com/news/detail-743244.html

到了这里,关于springboot yml文件自定义配置的读取、使用 字符串 数组 对象 集合的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 17、YML配置文件及让springboot启动时加载我们自定义的yml配置文件的几种方式

    其实本质和.properties文件的是一样的。 Spring Boot默认使用SnakeYml工具来处理YAML配置文件,SnakeYml工具默认就会被spring-boot-starter导入,因此无需开发者做任何额外配置。 YAML本质是JSON的超级,它在表示结构化文档时更有表现力。 ▲ properties文件使用 .分隔符 作为结构化的表现:

    2024年02月14日
    浏览(48)
  • SpringBoot中配置文件详解(yml、properties全局配置和自定义配置),获取配置方式

    目录 全局配置文件 application.properties配置文件 application.yaml配置文件  value值为普通数据类型(例如数字、字符串、布尔等)  value值为数组和单列集合  value值为Map集合  value值为对象或嵌套对象 @Value 自定义配置 使用@PropertySource加载配置文件 随机数设置及参数间引用 随机值设

    2024年02月14日
    浏览(48)
  • SpringBoot - 配置文件application.yml使用详解(附:Profile多环境配置)

    SpringBoot - 配置文件application.yml使用详解(附:Profile多环境配置) 1,基本介绍 (1)YAML 是 JSON 的超集,简洁而强大,是一种专门用来书写配置文件的语言,可以替代 application.properties。 (2)在创建一个 SpringBoot 项目时,引入的 spring-boot-starter-web 依赖间接地引入了 s

    2024年02月08日
    浏览(47)
  • 【SpringBoot系列】读取yml文件的几种方式

    前言 在Spring Boot开发中,配置文件是非常重要的一部分,而yml文件作为一种常用的配置文件格式,被广泛应用于Spring Boot项目中。Spring Boot提供了多种方式来读取yml文件中的属性值,开发者可以根据具体的需求和场景选择合适的方式。本文将介绍Spring Boot读取yml文件的主要方式

    2024年02月05日
    浏览(45)
  • 【SpringBoot】读取application.yml配置中的三种方式

    applicaiton.yml BootValueApplicationTests.java 打印如下所示 注意的地方 当对应的值不存在时,系统会报错。我们可以给定一个默认值即可。 如下所示: 在这里,sys.noValue这个值是不存在的,我们可以给定一个默认值为123,当然,我们如果不指定默认值的,它的默认值为空字符串。 优

    2024年02月13日
    浏览(53)
  • springboot读取yml文件中的list列表、数组、map集合和对象方法实例

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

    2024年02月09日
    浏览(52)
  • SpringBoot案例-配置文件-yml配置文件

    SpringBoot提供了多种属性配置方式 application.properties application.yml application.yaml 常见配置文件格式对比 XML(臃肿) properties(层级结构不够清晰) yml/yaml( 简洁,以数据为中心, 推荐使用 ) 基本语法 大小写敏感 数值前必须有空格 ,作为分隔符 使用缩进表示层级关系,缩进时

    2024年02月11日
    浏览(42)
  • java springboot yml文件配置 多环境yml

    如果是properties改用yml,直接新增一个 .yml ,删除原 .properties ,系统会自动扫描 application.properties 和 application.yml文件(如果同时存在两个文件,则会优先使用.properties文件?)。 注意:改了之后 需要maven 命令 clean一下 ,清个缓存。 一、yml多环境 如果需要配置多环境的配置

    2024年02月15日
    浏览(41)
  • SpringBoot的配置文件(properties与yml)

    SpringBoot 项目中所有重要的数据都是在配置文件中配置的,比如∶ 数据库的连接信息(包含用户名和密码的设置); 项目的启动端口; 第三方系统的调用秘钥等信息; 用于发现和定位问题的普通日志和异常日志; 还可以自定义配置,如配置上传文件的保存地址信息等。 想

    2024年02月12日
    浏览(38)
  • SpringBoot配置文件application.yml的理解

    一、存放位置分类 1.当前项目根目录下的config目录下 2.当前项目的根目录下 3.resources目录下的config目录下 4.resources目录下 按照这上面的顺序,4个配置文件的优先级依次降低。  二、自定义存放位置和自定义命名 自定义存放位置和自定义配置文件命令和application.properties配置类

    2024年02月09日
    浏览(51)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包