0

0

spring boot 配置文件有哪几种类型?它们有什么区别?

小老鼠

小老鼠

发布时间:2025-11-06 08:03:09

|

530人浏览过

|

来源于php中文网

原创

Spring Boot配置文件支持properties和YAML格式,YAML因可读性强更受欢迎;配置文件默认放在src/main/resources目录下,支持多环境配置如application-dev.yml;加载优先级从高到低为命令行参数、环境变量、外部配置文件、内部配置文件等;YAML可通过缩进配置List和Map,结合@ConfigurationProperties绑定对象;可通过spring.profiles.active激活指定环境,也可使用@PropertySource或SpringApplicationBuilder加载额外配置。

spring boot 配置文件有哪几种类型?它们有什么区别?

Spring Boot 配置文件主要有 properties 和 YAML 两种类型。Properties 格式简单,但可读性稍差;YAML 格式更具层次感,可读性更好,配置也更灵活。选择哪种取决于个人偏好和项目需求,不过现在 YAML 越来越流行了。

Properties 和 YAML 都是用来配置 Spring Boot 应用的,区别在于它们的语法和表达能力。

Spring Boot 配置文件应该放在哪里?

Spring Boot 默认会从以下位置加载配置文件:

  1. 当前目录的 /config 子目录
  2. 当前目录
  3. classpath 的 /config
  4. classpath 根目录

所以,通常我们把 application.propertiesapplication.yml 放在 src/main/resources 目录下,Spring Boot 启动时会自动加载。如果需要更灵活的配置,比如区分不同环境,可以使用 application-{profile}.propertiesapplication-{profile}.yml,并设置 spring.profiles.active 属性来激活对应的 profile。

Properties 和 YAML 配置文件的优先级是怎样的?

如果同时存在多种配置文件,Spring Boot 会按照一定的优先级加载它们。优先级从高到低依次是:

  1. 命令行参数
  2. 来自 SPRING_APPLICATION_JSON 的属性 (嵌入在环境变量或系统属性中的 JSON)
  3. ServletConfig 初始化参数
  4. ServletContext 初始化参数
  5. 来自 java:comp/env 的 JNDI 属性
  6. Java 系统属性 (System.getProperties())
  7. 操作系统环境变量
  8. 通过 random.* 配置的 RandomValuePropertySource
  9. jar 包外部的 application-{profile}.properties 或 application-{profile}.yml (带 spring.profile) 配置文件
  10. jar 包内部的 application-{profile}.properties 或 application-{profile}.yml (带 spring.profile) 配置文件
  11. jar 包外部的 application.properties 或 application.yml (不带 spring.profile) 配置文件
  12. jar 包内部的 application.properties 或 application.yml (不带 spring.profile) 配置文件
  13. @Configuration classes 注解的配置类
  14. 通过 SpringApplication.setDefaultProperties 指定的默认属性

简单来说,命令行参数的优先级最高,jar 包内部的默认配置文件优先级最低。

YAML 配置文件如何配置 List 和 Map?

YAML 配置文件在处理 List 和 Map 方面非常方便,可读性也很好。

  • List 的配置:

    my:
      list:
        - item1
        - item2
        - item3

    对应的 Java 代码:

    @ConfigurationProperties(prefix = "my")
    public class MyConfig {
        private List list;
    
        // getter and setter
    }
  • Map 的配置:

    Play.ht
    Play.ht

    根据文本生成多种逼真的语音

    下载
    my:
      map:
        key1: value1
        key2: value2
        key3: value3

    对应的 Java 代码:

    @ConfigurationProperties(prefix = "my")
    public class MyConfig {
        private Map map;
    
        // getter and setter
    }

YAML 语法简洁,使用缩进表示层级关系,非常适合配置复杂的对象。

如何在 Spring Boot 中使用多个配置文件?

有时候,我们需要根据不同的环境或功能模块使用多个配置文件。Spring Boot 提供了几种方式来实现:

  1. Profile-specific 配置文件:

    这是最常用的方式,通过 application-{profile}.propertiesapplication-{profile}.yml 来区分不同环境的配置。例如,application-dev.properties 用于开发环境application-prod.properties 用于生产环境。通过设置 spring.profiles.active 属性来激活对应的 profile。

  2. 使用 @PropertySource 注解:

    可以在配置类中使用 @PropertySource 注解来加载额外的配置文件。例如:

    @Configuration
    @PropertySource("classpath:my-config.properties")
    public class MyConfig {
        // ...
    }
  3. 使用 SpringApplicationBuilder

    可以通过 SpringApplicationBuilder 来指定额外的配置文件。例如:

    public static void main(String[] args) {
        new SpringApplicationBuilder(MyApplication.class)
                .properties("spring.config.name=my-config")
                .run(args);
    }

    这种方式可以指定配置文件的名称,Spring Boot 会自动加载 my-config.propertiesmy-config.yml

选择哪种方式取决于具体的需求。Profile-specific 配置文件适用于不同环境的配置,@PropertySource 适用于加载特定的配置文件,SpringApplicationBuilder 适用于更灵活的配置方式。

相关专题

更多
java
java

Java是一个通用术语,用于表示Java软件及其组件,包括“Java运行时环境 (JRE)”、“Java虚拟机 (JVM)”以及“插件”。php中文网还为大家带了Java相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

651

2023.06.15

java流程控制语句有哪些
java流程控制语句有哪些

java流程控制语句:1、if语句;2、if-else语句;3、switch语句;4、while循环;5、do-while循环;6、for循环;7、foreach循环;8、break语句;9、continue语句;10、return语句。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

453

2024.02.23

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

722

2023.07.05

java自学难吗
java自学难吗

Java自学并不难。Java语言相对于其他一些编程语言而言,有着较为简洁和易读的语法,本专题为大家提供java自学难吗相关的文章,大家可以免费体验。

725

2023.07.31

java配置jdk环境变量
java配置jdk环境变量

Java是一种广泛使用的高级编程语言,用于开发各种类型的应用程序。为了能够在计算机上正确运行和编译Java代码,需要正确配置Java Development Kit(JDK)环境变量。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

394

2023.08.01

java保留两位小数
java保留两位小数

Java是一种广泛应用于编程领域的高级编程语言。在Java中,保留两位小数是指在进行数值计算或输出时,限制小数部分只有两位有效数字,并将多余的位数进行四舍五入或截取。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

398

2023.08.02

java基本数据类型
java基本数据类型

java基本数据类型有:1、byte;2、short;3、int;4、long;5、float;6、double;7、char;8、boolean。本专题为大家提供java基本数据类型的相关的文章、下载、课程内容,供大家免费下载体验。

441

2023.08.02

java有什么用
java有什么用

java可以开发应用程序、移动应用、Web应用、企业级应用、嵌入式系统等方面。本专题为大家提供java有什么用的相关的文章、下载、课程内容,供大家免费下载体验。

427

2023.08.02

苹果官网入口直接访问
苹果官网入口直接访问

苹果官网直接访问入口是https://www.apple.com/cn/,该页面具备0.8秒首屏渲染、HTTP/3与Brotli加速、WebP+AVIF双格式图片、免登录浏览全参数等特性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

10

2025.12.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CSS教程
CSS教程

共754课时 | 16.3万人学习

【web前端】Node.js快速入门
【web前端】Node.js快速入门

共16课时 | 1.9万人学习

微信小程序开发之API篇
微信小程序开发之API篇

共15课时 | 1.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号