SpringBoot配置文件——yml讲解

本文介绍了SpringBoot的配置文件重点,特别是YML的使用。YML以其易读性和编程语言间的可移植性成为首选配置格式。讨论了YML的语法特性,包括键值对、对象、数组的表示,并通过实例展示了如何在项目中应用YML配置,包括@ConfigurationProperties的使用,以及处理编码问题。

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

SpringBoot遵循约定大雨配置,因此,其配置文件也是需要学习的一个重要内容

1、配置文件

SpringBoot 使用一个全局的配置文件,配置文件名是固定的:Application.properties、Application.yml

2、作用

配置文件的作用:修改springboot自动配置的默认值;springboot在底层都为我们自动配置好了。

3、具体内容

3.1 YML

YAML Aint Markup Language:YAML不是一种标记语言。通常以.yml为后缀的文件

标记语言:以前的配置文件多数都是xxx.xml文件;

Yml:是以数据为中心的,比json、xml等更适合作配置文件

3.2 YML的优点

  1. YAML易于人们阅读。
  2. YAML数据在编程语言之间是可移植的。
  3. YAML匹配敏捷语言的本机数据结构。
  4. YAML具有一致的模型来支持通用工具。
  5. YAML支持单程处理。
  6. YAML具有表现力和可扩展性。
  7. YAML易于实现和使用。

4、实践

我们在项目的resources包里创建一个文件,命名为application.yml,我们会发现里面的写法和properties不太一样

如果用xml写的话,则为:

<server>

<port>8888</port>

</server>

运行之后,发现端口号变为8888:

 

 

5、YML语法

k: v 表示键值对关系,冒号后面必须有一个空格;

使用空格的缩进表示层级关系,空格数目不重要,只要是左对齐的一列数据,都是同一个层级的;

大小写敏感;

缩进时不允许使用Tab键,只允许使用空格。

 

值的写法

5.1 字面量:普通的值(数字、字符串、布尔)

k: v:字面量直接写;字符串默认不用加上单引号或者双引号;

​ "": 双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思

​       name: "zhangsan \n lisi":输出;zhangsan 换行 lisi

​ '':单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据

5.2 对象(属性和值)、Map(键值对)

在下一行来写对象的属性和值的关系,注意缩进

​ 行内写法:

5.3 数组、list、set

用- 值表示数组中的一个元素

行内写法:

 

我们来写一个例子:

创建一个Person类

同时在yml中写出属性值:

完成后,我们在Person类中配置这个yml数据,因此我们需要:@ConfigurationProperties注解,用以告诉springboot将本类中的所有属性和配置文件中相关的配置进行绑定;

参数prefix = "person",即将配置文件中某个标签下面的所有属性进行一一映射

因为只有这个组件是容器中的组件,才能使用容器提供的功能,所以我们还需要@Component注解

可以编写一个测试类,

运行结果:

 

我们也可以在properties中写属性值,但是运行后显示乱码:

我们在file的setting里面搜索file ecodings,选择编码UTF-8

点击apply和OK后,发现properties文件中的属性变为乱码:

修改为中文,再进行运行:

 

当然,我们也能用@Value注解配置,但是需要手动一个一个指定

 

运行结果:

 

6、总结

由此我们整理一下@Value获取值和@ConfigurationProperties获取值比较

松散绑定是指在用@Value注解时,person.last-name不能是person.lastName

而JSR303数据校验则是指,在配置数据时,我们可以用@Validated注解,这样我们试图在lastName之前使用 @Email注解,表示这个值应该是邮箱格式。

配置文件无论是yml还是properties他们都能获取到值;

如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value;(源自复杂类型封装)

例如,我们有时候想单独取一个值,就可以充分利用@Value注解

浏览器运行结果为:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值