当前位置: 代码网 > it编程>编程语言>Java > SpringBoot项目属性配置(application.properties、yml和yaml)

SpringBoot项目属性配置(application.properties、yml和yaml)

2025年08月01日 Java 我要评论
简介springboot支持多种配置文件格式,包括application.properties、yml和yaml等。本文章将详细介绍这三种配置文件的内容格式和详细用法,以及在程序中如何对配置文件中的属

简介

springboot支持多种配置文件格式,包括application.properties、yml和yaml等。本文章将详细介绍这三种配置文件的内容格式和详细用法,以及在程序中如何对配置文件中的属性进行读取。文章内容若存在错误或需改进的地方,欢迎大家指正!若对操作有任何疑问欢迎留言!非常感谢!

一、springboot默认配置文件

1、application.properties文件

该文件位于resources目录下,是随工程的创建而生成的一个空白文件(若没有可手动创建,必须保证名称和类型为application.properties),在这个文件中可以进行项目的配置。

2、文件内容要求:

  • 键值对结构,格式为key=value
  • 注释以#或者!开头
  • 列表或者数组的值使用逗号隔开
  • 使用点号 . 表示属性层级
  • 想看系统支持哪些配置可以在spring官方查看,链接:common application properties

以配置启动端口为例,springboot项目默认的启动端口为8080,现在将这个端口配置为8888。如下,只需要在application.properties文件中配置server.port=8888即可。

二、yml或者yaml配置文件

1、简介

yml文件和yaml文件本质上是同一种文件格式,没有实质性的技术区别。.yaml是官方推荐的标准扩展名,.yml是因为早期windows限制3字符扩展名而流行。无论使用哪个扩展名,文件内容都遵循相同的 yaml 规范。所以下面在介绍文件时,也不再区分二者。

因为yaml文件内容的层次感更强,内容更加清爽,一目了然。所以,在实际项目中大部分情况下是使用.yaml或者.yml作为配置文件,application.properties文件使用的频率就较低些。一般情况下,三者不会共存。

2、语法规则

  • 大小写敏感
  • 属性层级关系使用多行描述,每行结尾使用冒号结束
  • 使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用tab键)
  • 属性值前面添加空格(属性名与属性值之前使用冒号+空格作为分割)
  • # 表示注释
  • ${一级属性名.二级属性名... ...}表示属性引用
  • 使用引号包裹带有转义字符的字符串才可以生效
# 普通使用
name: demo
 
# 层级关系
user:
  name: zhangsan
  age: 18
 
# 数组/列表格式
list:
  - zhangsan
  - lisi
  - wangwu
# 数组/列表缩略格式
list2: [zhangsan, lisi, wangwu]
 
# 对象列表
users:
  - name: zhangsan
    age: 18
  - name: lisi
    age: 19
  - name: wangwu
    age: 20
# 对象列表缩略格式
users2: [{name:zhangsan, age:18},{name:lisi, age:19},{name:wangwu, age:20}]
 
# ---------- 部分补充 ----------
# true,true,true,false,false,false
boolean: true
# 6.23542343e+5 支持科学计数法
float: 3.14
# 0b1010_0111_0100_1010_1110 支持二进制、八进制、十六进制
int: 123
# 使用 ~ 表示null
null: ~
# 字符串可以直接书写
string: helloworld
# 可以使用双引号包裹特殊字符
string2: "hello\nworld"
 
# 属性引用
baseurl: "127.0.0.1"
tmp: ${baseurl}:${server.port}}

3、配置文件加载优先级

当application.properties文件、yaml文件、yml文件三者共存时,文件中相同配置的加载优先级如下:

application.properties > yml > yaml

而三个文件中不同的配置就不存在加载优先级的问题,而是全部保留,也就是说三个文件的不同的属性都会被读到。

三、springboot程序中读取配置文件属性的几种方式

1、使用@value注解读取

程序中定义的属性名与配置文件中的属性名并没有强关联,也就是定义的时候无需强制保持一致。

使用@value注解读取单个数据,属性名引用方式:${一级属性名.二级属性名... ...},只需要在大括号中加一个冒号然后写值就可以设置默认值:${一级属性名.二级属性名... ...:默认值}。

2、使用environment类对象获取属性

使用@autowired在类中注入environment对象,然后使用getproperty方法接收配置文件中的属性名来获取属性值,可以进行非空判断来设置默认值。

3、自定义对象映射配置文件属性

(1)创建定义对象

注意:这里可能与听到的知识不太一样,可自行测试

配置项中的名称需要与实体类的set方法后的名称保持强一致。配置项名称时可以不与实体类中的属性名保持一致,因为一般情况下set/get方法后面的名称是和属性名一致的,比如自动生成或者使用lombok生成的方法,都是一致的,所以也会有配置项名必须属性名保持一致的说法。如果有特殊情况,那么只需要保证配置项中的名称需要与实体类的set方法后的名称强一致即可,与get方法、实体类名、实体属性名、set方法形参无关。

(2)将类交给spring的ioc容器

这个地方有两种方式,注意只能使用其中一种,不可同时使用!

第一种方式:在自定义类上增加@component注解,让当前的类直接注册成ioc的bean。

第二种方式:在启动类上声明@enableconfigurationproperties注解,并在指定属性值,这里的属性值如果只有一个类可以直接写,若是多个类可以使用数组形式。这种方式会自动将数组里面的类注册为bean,好处在于在这里可以直观的观察到有哪些读取配置类。

(3)指定当前类加载的数据

在自定义类上面增加@configurationproperties(prefix = "student")注解,并使用prefix属性指定配置文件中属性前缀。绑定前缀命名规范:仅能使用纯小写字母、数字、下划线作为合法的字符。

(4)示例

通过上面三部就已经完成了配置文件中的属性对自定义类属性的映射,下面是一个使用示例:

到此这篇关于springboot项目属性配置(application.properties、yml和yaml)的文章就介绍到这了,更多相关springboot 属性配置内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网! 

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com