Springboot的配置文件及其优先级说明

 更新时间:2025年12月11日 14:33:36   作者:我是鸹貔  
文章介绍了Spring Boot的配置文件,包括application.properties和application.yml的使用,以及它们的优先级,还讨论了如何通过外置配置文件覆盖内置配置文件,并使用@Value注解读取自定义属性

配置文件

内置配置文件

配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;SpringBoot使用一个全局的配置文件,配置文件名是固定的:

  • application.properties
  • application.yml

以上两个任意一个都可以,也可以组合起来使用

  • 以前的配置文件:大多都使用的是 xxxx.xml文件;
  • YAML:以数据为中心,比json、xml等更适合做配置文件;

yml与properties的比较

application.properties与application.yml的比较:

我们会发现properties文件如果是要配置同一层级下的属性需要把它的前缀全部写上,而yml文件则是跟文件的层级结构相似,而且分层清晰,所有我们一般选择使用yml文件。

优先级比较

虽然说application.yml与application.properties都是springboot的配置文件,但是他们也存在一个优先级:properties的优先级高于yml文件。

接下来就是验证这个优先级 :

首先给yml和properties文件设置不同的port,然后启动项目

项目启动之后,我们从日志中可以看到端口号时8081,时properties文件中配置的,因此验证了properties文件的优先级。

外置配置文件

首先,再我们的项目中我们导入了一个插件,可以将应用打包成一个可执行的jar包,无论在哪都可以使用java -jar进行运行。因此我们可以把打包好的jar包拿出来,放到一个文件夹中,然后去验证其外置的配置文件。

插件如下:

打包的时候我们先需要依次运行clean和package指令。

打包完成之后我们可以进入到项目对应的target文件夹下边,结构如下:

我们可以把jar包复制一份,然后放到一个新的文件夹中,并在文件夹中新建一个application.yml文件,重新制定port为8085,然后使用java -jar运行程序。

java -jar redisdemo-0.0.1-SNAPSHOT.jar

然后我们在当前目录下新建一个config文件,config文件中新建一个application.yml文件,并设置port为8090,然后再次启动项目,我们会发现端口号变成了8090。

因此我们得到一个优先级的比较:

外置的config中的配置文件>外置的配置文件>内置的application.properties>内置application.yml

springboot读取配置文件

我们也可以在配置文件中自定义属性的值,然后可以使用@Value来读取,例如:

在yml文件中添加:

api:
  name: zhangsan
  password: 123456

新建ConfigController文件:

package com.example.redisdemo.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ConfigController {
    // :后边的是默认值,如果找不到api.name就使用1,并且不会抛出异常
    @Value("${api.name:1}")
    private String name;
    @Value("${api.password:2}")
    private String password;

    @GetMapping("/config")
    public void config(){
        System.out.println(name);
        System.out.println(password);
    }
}

然后启动项目,访问config进行验证:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java中字符串替换的四种方法举例总结

    Java中字符串替换的四种方法举例总结

    Java提供了多种方法来替换字符串,其中最常用的是使用replace()方法和正则表达式,下面这篇文章主要给大家介绍了关于Java中字符串替换的四种方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-08-08
  • springboot中使用雪花算法生成雪花ID

    springboot中使用雪花算法生成雪花ID

    本文主要介绍了springboot中使用雪花算法生成雪花ID,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • 手写简版kedis分布式key及value服务的实现及配置

    手写简版kedis分布式key及value服务的实现及配置

    这篇文章主要为大家介绍了手写简版的kedis分布式key及value服务的实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-02-02
  • Java完整实现记事本代码

    Java完整实现记事本代码

    这篇文章主要介绍了Java实现的简易记事本,较为详细的分析了基于java实现记事本程序的完整过程,具有一定参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • Java8新特性之lambda的作用_动力节点Java学院整理

    Java8新特性之lambda的作用_动力节点Java学院整理

    我们期待了很久lambda为java带来闭包的概念,但是如果我们不在集合中使用它的话,就损失了很大价值。现有接口迁移成为lambda风格的问题已经通过default methods解决了,在这篇文章将深入解析Java集合里面的批量数据操作解开lambda最强作用的神秘面纱。
    2017-06-06
  • SpringBoot整合MongoDB的完整操作指南

    SpringBoot整合MongoDB的完整操作指南

    在实际项目开发中,合理封装MongoDB的操作工具类,可以大幅提升代码复用性和维护性,本文将带你从零开始实现一个功能完善的MongoDB工具类,涵盖基础CRUD和高级查询功能,需要的朋友可以参考下
    2026-02-02
  • java8 Stream大数据量List分批处理切割方式

    java8 Stream大数据量List分批处理切割方式

    这篇文章主要介绍了java8 Stream大数据量List分批处理切割方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • 详解Java如何实现防止恶意注册

    详解Java如何实现防止恶意注册

    恶意注册通常是指使用自动化脚本或者机器人在短时间内进行大量的注册行为,这种行为会对系统造成压力,甚至会导致系统瘫痪。所以本文为大家总结了一些防止恶意注册的方法,需要的可以参考一下
    2023-04-04
  • Java Lambda表达式常用的函数式接口

    Java Lambda表达式常用的函数式接口

    这篇文章主要介绍了Java Lambda表达式常用的函数式接口,文章基于Java Lambda表达式展开对常用的函数式接口的介绍,具有一的的参考价值需要的小伙伴可以参考一下
    2022-04-04
  • Java实现Html转Pdf的方法

    Java实现Html转Pdf的方法

    这篇文章主要介绍了Java实现Html转Pdf的方法,实例分析了java基于ITextRenderer类操作页面及系统自带字体生成pdf文件的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07

最新评论