SpringBoot之YAML文件的使用

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
SpringBoot之YAML文件的使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 系列文章目录
  • 前言
  • 一、YAML配置文件介绍
  • 二、YAML的使用
    • 自定义简单数据
    • 自定义对象数据
    • 自定义集合数据
    • @Value注解配置文件数据
    • @ConfigurationProperties读取配置文件数据
    • 占位符的使用
      • 使用配置文件中的值
      • 使用框架提供的方法
  • 三、配置文件的优先级
  • 四、bootstrap配置文件
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

在当今的软件开发领域,Spring Boot 已经成为了一个非常流行和广泛使用的框架。它简化了 Java 应用程序的开发过程,使开发者能够更加高效地构建企业级应用。
在 Spring Boot 中,配置文件是应用程序的重要组成部分。而 YAML 作为一种人性化的表现形式,因其简洁、易读和易于维护的特点,逐渐成为了 Spring Boot 配置文件的首选格式。
在这篇博客中,我将向你介绍 YAML 文件在 Spring Boot 中的使用。我们将探讨 YAML 的基本语法、如何在 Spring Boot 中配置 YAML 文件,以及一些常见的配置项示例。通过学习这些内容,你将能够更好地利用 YAML 文件来管理和配置你的 Spring Boot 应用程序。
无论你是刚刚开始学习 Spring Boot,还是已经有一定经验的开发者,我相信这篇博客都会对你有所帮助。让我们一起深入了解 YAML 文件在 Spring Boot 中的应用,提升我们的开发效率和代码质量。


提示:以下是本篇文章正文内容,下面案例可供参考

一、YAML配置文件介绍

clickable Avatar: undefined
介绍 Spring Boot 的方面
YAML(YAML Ain’t Markup Language)是一种人性化的表现形式,用于序列化数据,类似于标记语言,如 HTML 、XML ,但是其更加简洁,而且可读性更好。
YAML 文件的扩展名通常是.yml或.yaml。它使用空格缩进来表示结构,而不是使用标签或其他复杂的语法。这使得 YAML 文件易于阅读和编写,同时也保持了其结构的清晰。
在 Spring Boot 中,YAML 配置文件用于存储应用程序的配置信息,如数据库连接、端口号、日志级别等。Spring Boot 提供了自动加载 YAML 配置文件的功能,使得开发者可以轻松地管理和配置应用程序。
下面是一个简单的 YAML 配置文件示例:

server:
  port: 8080

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test
    username: root
    password: >

在这个示例中,我们定义了两个部分:server和spring。server部分配置了服务器的端口号为8080。spring部分配置了数据源的信息,包括 URL 、用户名和密码。
YAML 配置文件的优势在于其简洁性和可读性。通过使用空格缩进来表示结构,我们可以清晰地看到配置的层次结构,并且易于理解和维护。此外,YAML 还支持注释,方便我们对配置进行说明和解释。

二、YAML的使用

自定义简单数据

我们还可以在YAML文件中配置其他信息以便我们在项目中使用。配置简单数据的方式如下:

  • 语法:
数据名:
  • 示例代码:
name: zhangsan

注意:value之前有一个空格

自定义对象数据

  • 语法:
对象:
    属性名1: 属性值
    属性名2: 属性值
    
# 或者
对象: {属性名1: 属性值,属性名2: 属性值}

  • 示例代码:
# 学生1
student1:
  sex: female
  age: 10
  address: beijing
# 学生2
student2: {sex: female,age: 10,address: beijing}

注意属性名前面的空格个数不限,在yml语法中,相同缩进代表同一个级别,只要每个属性前的空格数一样即可。

自定义集合数据

  • 语法
集合:
    - 值1
    - 值2
    
# 或者
集合: [值1,值2]

  • 示例代码
# 城市
city1:
  - beijing
  - tianjin
  - shanghai
  - chongqing


city2: [beijing,tianjin,shanghai,chongqing]

# 集合中的元素是对象
students:
  - name: shangxuetang
   age: 28
   score: 88
  - name: chengxuyuan
   age: 38
   score: 90

注意:值与之前的 - 之间存在一个空格

@Value注解配置文件数据

@Controller
public class YmlController1 {
  @Value("${name}")
  private String name;


  @Value("${student1.age}")
  private int age;


  @Value("${city1[0]}")
  private String city1;


  @Value("${students[0].score}")
  private double score1;


  @RequestMapping("/yml1")
  @ResponseBody
  public String yml1(){
    System.out.println(name);
    System.out.println(age);
    System.out.println(city1);
    System.out.println(score1);
    return "hello springboot!";
   }
}

@ConfigurationProperties读取配置文件数据

通过@ConfigurationProperties(prefifix=“对象”)可以将配置文件中的配置自动与实体进行映射,这样可以将yml文件中配置的对象属性直接映射到Bean当中。
我们可以在application.yml文件中定义相应的配置项:

# application.yml
my:
  config:
    myProperty: value

假设我们有一个名为MyConfig的配置类,它包含了一些配置属性:

// MyConfig.java
@Configuration
@ConfigurationProperties(prefix = "my.config")
public class MyConfig {
    // 配置属性
    private String myProperty;
    // 获取配置属性的值
    public String getMyProperty() {
        return myProperty;
    }
    // 设置配置属性的值
    public void setMyProperty(String myProperty) {
        this.myProperty = myProperty;
    }
}

通过使用@ConfigurationProperties注解,我们可以方便地将配置文件中的数据映射到 Java 对象的属性上,从而实现了配置的解耦和可维护性。

占位符的使用

使用配置文件中的值

1.编写配置文件

server:
  port: 8888
myconfig:
  myport: ${server.port}

2.读取配置文件

@Controller
public class YmlController3 {
  @Value("${myconfig.myport}")
  private int port;


  @RequestMapping("/yml3")
  @ResponseBody
  public String yml3(){
    System.out.println(port);
    return "hello springboot!";
   }
}

使用框架提供的方法

SpringBoot框架提供了一些生成随机数的方法可以在yml文件中使用:

  • ${random.value} :生成类似uuid的随机数,没有"-"连接
  • ${random.uuid} :生成一个uuid,有短杠连接
  • ${random.int} :随机取整型范围内的一个值
  • ${random.int(10)}:随机生成一个10以内的数
  • ${random.int(100,200)}:随机生成一个100-200 范围以内的数
  • ${random.long}:随机取长整型范围内的一个值
  • ${random.long(100,200)}:随机生成长整型100-200范围内的一个值

三、配置文件的优先级

配置文件有如下存放位置:

  • 项目根目录下
  • 项目根目录下的/config子目录中
  • 项目的resources目录中
  • 项目的resources下的/config子目录中

这些配置文件的优先级从高到低依次为:项目根目录下的/config子目录>项目根目录下>项目的resources下的/config子目录>项目的resources目录中

四、bootstrap配置文件

Spring Boot 默认支持properties和YAML两种格式的配置文件,并且有bootstrap和application两种配置文件。
两者的区别在于:bootstrap配置文件先于application配置文件被加载,会先创建初始化 Bootstrap Context,再创建初始化 Application Context,应用于更早期的配置信息,可以理解为系统配置。bootstrap和application共享同一个Environment,默认情况下,bootstrap的配置不会被覆盖,而application的配置项可以被覆盖(比如被 application-dev 覆盖,或被 java 命令行覆盖)。
bootstrap配置文件主要用于从额外的资源来加载配置信息,还可以在本地外部配置文件中解密属性。
bootstrap配置文件特征:

  • boostrap由父ApplicationContext加载,比applicaton优先加载。
  • boostrap里面的属性不能被覆盖。

总结

提示:这里对文章进行总结:

YAML 是一种用于配置和数据序列化的 human-readable data-serialization language,在 Spring Boot 中,YAML 文件可以用于配置应用程序的各种属性和参数。

你可能感兴趣的:(SprignBoot,spring,boot,后端,java,配置文件,YAMl)