当前位置: 首页 > news >正文

【SpringBoot从初学者到专家的成长11】Spring Boot中的application.properties与application.yml详解

在Spring Boot应用程序中,application.propertiesapplication.yml是配置文件的两种常用格式。这两个文件主要用于定义和管理应用的各种配置项,如数据库连接、日志设置、服务器端口、Spring Boot的自动配置选项等。虽然这两个文件的功能是相同的,但它们的格式和写法有所不同。任何使用SpringBoot做为开发框架的开发人员,都需要熟悉了解两种配置文件的格式和使用方法。

一、application.properties简介

application.properties是Spring Boot中最常用的配置文件格式之一。它遵循键值对的方式定义配置项,每个配置项都由键(key)和值(value)组成。其格式简洁、直观,非常适合用来定义简单的配置项。

1.1 配置文件基本格式

application.properties文件中,每一行都代表一个配置项,格式为:

key=value

例如,配置数据库连接:

spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root
1.2 常见配置项
  • 服务器配置

    server.port=8080
    server.servlet.context-path=/myapp
    
  • 数据源配置

    spring.datasource.url=jdbc:mysql://localhost:3306/mydb
    spring.datasource.username=root
    spring.datasource.password=password
    
  • 日志配置

    logging.level.org.springframework=INFO
    logging.level.com.example=DEBUG
    logging.file.name=app.log
    
1.3 特点
  • 简单直接,适合快速配置。
  • 容易理解和使用,特别适合小型项目和初学者。
  • 适合进行简单的属性配置,对于复杂结构的配置可能不太直观。

二、application.yml简介

application.yml(YAML格式)是Spring Boot支持的另一种配置方式。与properties文件不同,yml文件具有层级结构,使用缩进来表示配置项的层级关系。YAML语法更加灵活,适用于配置较复杂的应用场景。

2.1 配置文件基本格式

application.yml文件中,配置项的格式遵循YAML的规则,层级通过缩进表示(通常是2个空格)。

spring:datasource:url: jdbc:mysql://localhost:3306/mydbusername: rootpassword: password
2.2 常见配置项
  • 服务器配置

    server:port: 8080servlet:context-path: /myapp
    
  • 数据源配置

    spring:datasource:url: jdbc:mysql://localhost:3306/mydbusername: rootpassword: password
    
  • 日志配置

    logging:level:org.springframework: INFOcom.example: DEBUGfile:name: app.log
    
2.3 特点
  • 配置项结构清晰、层级分明,适合管理复杂的配置。
  • 支持更复杂的数据结构(如数组、对象等)。
  • 在多个配置项间层级关系非常清晰,尤其对于大型项目或微服务系统来说,更加便于维护。

三、application.propertiesapplication.yml的区别

尽管这两个配置文件的功能相同,它们有一些关键的区别:

特点application.propertiesapplication.yml
语法键值对形式,每个配置项在一行层级结构,通过缩进表示层级关系
可读性对于简单的配置项较为直观对于复杂结构更为清晰,层次分明
适用场景配置简单的应用配置复杂结构,如嵌套属性、数组等
格式灵活性不支持多层嵌套结构支持多层嵌套、数组等结构
文件长度配置较长时会显得杂乱配置较长时层级分明,更易维护

四、如何在Spring Boot中使用application.propertiesapplication.yml

4.1 切换配置文件格式

Spring Boot默认会查找application.properties作为配置文件,但你也可以选择使用application.yml。只需将文件名修改为application.yml,Spring Boot会自动识别并加载。

如果项目中同时存在这两个文件,Spring Boot会优先加载application.properties。如果你想优先加载application.yml,可以在application.properties中使用如下配置:

spring.config.location=classpath:/application.yml
4.2 配置文件的优先级

Spring Boot会按照以下优先级加载配置文件,前面的文件会覆盖后面的文件配置:

  1. 命令行参数(最高优先级)
  2. application.properties / application.yml(默认配置文件)
  3. 外部配置文件(通过--spring.config.location指定)
  4. 默认配置
4.3 多环境配置

Spring Boot支持为不同的环境使用不同的配置文件。你可以创建多个application-{profile}.propertiesapplication-{profile}.yml文件,并通过spring.profiles.active指定当前激活的环境配置。

例如:

# application-dev.properties
spring.datasource.url=jdbc:mysql://localhost:3306/dev_db# application-prod.properties
spring.datasource.url=jdbc:mysql://localhost:3306/prod_db

application.properties中指定激活的环境:

spring.profiles.active=dev

这样,Spring Boot会根据spring.profiles.active的值加载对应的配置文件。

properties和yml的优缺点比较

  • application.properties适用于较为简单的配置,特别是当配置项不多时,其简洁性和易用性非常适合小型项目。
  • application.yml更适合用于复杂的配置,能够清晰地组织层级关系,尤其在有大量嵌套数据结构或数组的场景下更为优雅。
    以下是application.propertiesapplication.yml的优缺点对比表格:
特性application.propertiesapplication.yml
优点- 简单直观,适合小型项目- 层级结构清晰,适合复杂配置
- 适合配置项较少的情况- 支持嵌套对象和数组,配置管理灵活
- 学习曲线低,易于上手- 易于维护,特别是配置项多时
- 适合快速开发和测试- 配置文件更简洁,不易出现冗长的单行配置
缺点- 对复杂的结构配置支持不足- 配置较长时,需要注意缩进的准确性
- 配置项较多时,容易显得杂乱不清- 比properties格式更难以理解,尤其对初学者
- 不支持层级结构,复杂配置较难管理- 相比properties,格式更严格,需要保持一致的缩进
- 对层级和数组结构的表示较为困难- 对小型项目而言,可能显得稍微复杂和冗余

五、写在最后

无论是选择application.properties还是application.yml,都取决于你的个人习惯和项目需求。对于简单的配置,properties格式足够;而对于复杂的配置,yml格式能够提供更清晰的结构和层级。如果你的应用日后需要处理更复杂的配置项,application.yml可能是更好的选择。两者都能够满足Spring Boot的配置需求,只要你合理选择并加以使用,便能提升开发效率和项目可维护性。

http://www.dtcms.com/a/473518.html

相关文章:

  • 简述你对于网站建设的认识h5微网站开发
  • OpenHarmony IMF输入法框架全解析:从原理到自定义输入法开发实战指南
  • LabVIEW的PID控制器带报警仿真系统
  • WordPress--代码块添加折叠和展开功能
  • 爱站网能不能挖掘关键词做网站Linux
  • 在单台电脑上管理多个 GitHub 账户并解决推送问题
  • 计算机毕设选题推荐:基于Hadoop和Python的游戏销售大数据可视化分析系统
  • kanass入门到实战(17) - 如何进行工时管理,有效度量项目资源
  • 汽车角雷达波形设计与速度模糊解决方法研究——论文阅读
  • Node.js+Prisma性能优化:分页查询与事务处理实战
  • 网站建站授权模板下载wordpress爬虫ca
  • 做的网站怎么联网长春制作网站软件
  • FPGA 中的 AXI 总线介绍
  • 指针和动态分配
  • 【OPENGL ES 3.0 学习笔记】第一天:什么是EGL
  • 【第十七周】自然语言处理的学习笔记02
  • 解锁LangChain:Python构建大语言模型应用全攻略
  • Android 事件分发学习心得
  • TensorFlow2 Python深度学习 - TensorFlow2框架入门 - 使用Keras实现分类问题
  • Happens-Before原则
  • 自己设置网站怎么做永远网站建设
  • 做网站的软件景宁县建设局网站
  • react多文件分片上传——支持拖拽与进度展示
  • Excel如何合并单元格?【图文详解】Excel合并单元格技巧?单元格合并高阶操作?
  • Fabric.js 完全指南:从入门到实战的Canvas绘图引擎详解
  • 学网站建设要多少钱遵义网站建设网站
  • 数据分析:Python懂车帝汽车数据分析可视化系统 爬虫(Django+Vue+销量分析 源码+文档)✅
  • 从Java集合到云原生现代数据管理的演进之路
  • 03_pod详解
  • 线性代数 | excellent algebraic space