Spring Boot配置文件详解

本文详细介绍了Spring Boot的配置文件,包括properties和yaml两种格式。properties以其简单的key=value方式配置,而yaml则以其直观易读的格式受到青睐。文章探讨了yaml的基本原则,如大小写敏感、缩进表示层级等,并提到了@ConfigurationProperties和@Value注解的使用,还涉及了多环境配置和数据校验等内容。最后,作者推荐使用yaml进行配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring Boot配置文件

SpringBoot中的配置也是通过配置文件来完成的,在SpringBoot中主要有两种配置文件格式。

  1. properties
  2. yaml

一、properties

properties配置文件是我们使用SSM的时候最常用的配置文件了,在后缀为properties的配置文件中,是以key=value的方式进行配置的。

比如数据库连接配置文件:db.properties

server.port=8081

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/demo?serverTimezone=UTC
jdbc.username=root
jdbc.password=123456
person.name=zhangsan
person.age=12
person.gender=男
person.desc=my name is ${person.name},my age is ${person.age}

这里我们不再过多演示。

二、yaml

YAML是“YAML Ain’t Markup Language YAML不是一种标记语言”的外语缩写,但为了强调这种语言以数据做为中心,而不是以置标语言为重点,而用返璞词重新命名。它是一种直观的能够被电脑识别的数据序列化格式,是一个可读性高并且容易被人类阅读,容易和脚本语言交互,用来表达资料序列的编程语言。它是类似于标准通用标记语言的子集XML的数据描述语言,语法比XML简单很多。

我们在配置spring的xml文件的时候,有属于Spring的xml文件格式;我们配置SpringMVC的xml配置文件的时候,有属于SpringMVC的xml文件格式;我们配置Mybatis的xml文件的时候,又有独属于Mybatis的xml文件格式。
不同的xml文件的语法不同,我们在配置不同的xml文件的时候,需要严格注意不同xml文件的语法细节,让人烦不胜烦。而yaml不同,yaml文件的属性配置方式是固定的,而且符合我们的使用习惯。

yaml使用基本原则:

  • 大小写敏感
  • 使用缩进表示层级关系
  • 禁止使用tab缩进,只能使用空格键
  • 缩进长度没有限制,只要元素对齐就表示这些元素属于一个层级。
  • 使用#表示注释
  • 字符串可以不用引号标注

yaml配置文件方式是我们首次接触,是以key: 空格value来进行属性赋值的。

注意:空格不能省略,否则无法识别

server:
  port: 8082

Person:
  lastname: zhangsan
  age: 10
  sex:likes:
    - book
    - movie

当我们使用yaml对Person类赋值的时候,要匹配yaml中赋的值,需要使用注解@ConfigurationProperties或者@Value

//使用@ConfigurationProperties注解匹配yaml文件中对象的赋值
//使用参数prefix来添加前缀,表示匹配yaml配置文件中person下参数
//@ConfigurationProperties表示批量注入属性
@ConfigurationProperties(prefix = "person")
@Component
public class Person {

    //也可以使用@Value来对属性一个个的注入,但是当属性很多时,事情就变得麻烦了
    //我们很少使用@Value,更多的还是使用@ConfigurationProperties
//    @Value("${person.lastname}")
    private String lastName;
    
    //@Value("${person.age}")
    private Integer age;
    
    //@Value("${person.sex}")
    private String sex;
    
    private List<String> likes;

    .......
}

@ConfigurationProperties和@Value的区别

@ConfigurationProperties@Value
功能批量注入配置文件中的属性一个个注入属性
松散绑定(驼峰、下划线等)支持不支持
SpEL不支持支持
JSR303数据校验(@Email等)支持不支持
复杂类型封装支持不支持

配置多环境切换

配置开发环境:application-dev.yaml

server:
  port: 8084

配置测试环境:application-test.yaml

server:
  port: 8083

在application.yaml中可以随意切换使用哪一个环境:使用测试环境

spring:
  profiles:
    active: test

在application.yaml中可以随意切换使用哪一个环境:使用开发环境

spring:
  profiles:
    active: dev

使用配置文件的细节:

  • 配置文件主要用来注入属性(比如数据库连接的配置)
  • 配置文件中还可以使用表达式
  • JSR303的数据校验(如邮箱验证:@Email)
  • 多环境配置(如生产环境和测试环境的切换)

三、总结

我们可以使用properties来进行SpringBoot的配置,也可以使用yaml的方式进行配置。两者没有什么优劣之分,都可以完成配置功能,看个人使用习惯而已。

推荐使用yaml的方式进行配置,yaml更广泛常用,更易于阅读和被人接受。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值