SpringBoot 配置文件加载位置与优先级问题详解

下面我来详细讲解一下 Spring Boot 配置文件加载位置与优先级问题的攻略。

1. Spring Boot 配置文件的加载位置

Spring Boot 配置文件的加载位置非常灵活,可以根据不同的需求和情况进行配置。Spring Boot 配置文件的加载位置可以分为以下三种情况:

1.1 classpath下的默认加载位置

Spring Boot 默认会从 classpath 下的 /config 目录、/ 目录、classpath:/config/ 目录和 classpath:/ 目录下加载名称为 application 的配置文件。其中优先级从高到低分别为 /config 目录、/ 目录和 /config/ 目录。

示例1:

# src/main/resources/application.properties
server.port=8080

1.2 指定配置文件路径

除了默认的加载位置外,还可以通过指定配置文件的路径来加载。例如,可以通过在项目启动时加入 JVM 参数 -Dspring.config.location 来指定配置文件的路径。

示例2:

java -jar -Dspring.config.location=/usr/local/config/application.properties myproject.jar

1.3 指定配置文件名称

除了默认的 application.propertiesapplication.yml 文件外,还可以通过指定配置文件名称来加载其他的配置文件。例如,可以通过在项目启动时加入 JVM 参数 -Dspring.config.name 来指定配置文件的名称。

示例3:

java -jar -Dspring.config.name=myappconfig -Dspring.config.location=/usr/local/config/ myproject.jar

2. Spring Boot 配置文件的优先级

上面讲到了 Spring Boot 配置文件的加载位置,接下来我们来了解一下 Spring Boot 配置文件的优先级问题。Spring Boot 配置文件的优先级从高到低分别为:命令行参数、Java 系统属性、操作系统环境变量、application-{profile}.propertiesapplication-{profile}.ymlapplication.propertiesapplication.yml

2.1 命令行参数

命令行参数和其他来源的属性设置会合并成同一个environment。命令行参数的优先级最高。

示例4:
```shell script
java -jar myproject.jar --server.port=8080


### 2.2 Java 系统属性

可以通过在命令行启动 Java 时设置 `-D` 参数来设置 Java 系统属性。Java 系统属性的优先级高于操作系统环境变量。

示例5:
```shell script
java -jar myproject.jar -Dserver.port=8080

2.3 操作系统环境变量

可以通过设置操作系统环境变量来设置配置项的值,但是需要遵循相应的规则。例如:在 Linux 下环境变量的名称需要全部大写,变量名称中的句点(.)需要被转换为下划线(_),并且需要以 SPRING_PROFILES_ACTIVE 开头。环境变量的优先级高于 application-{profile}.propertiesapplication-{profile}.yml

示例6:
```shell script
export SPRING_APPLICATION_JSON='{"server.port":8080}'


### 2.4 application-{profile} 属性文件

可以通过在配置文件名中添加`{profile}`来激活某个配置文件。`{profile}`的值可以通过spring.profiles.active属性来指定。例如,`application-test.properties` 文件将在测试环境中使用,`application-prod.properties` 文件将在生产环境中使用。`application-{profile}.properties` 或 `application-{profile}.yml` 的优先级高于 `application.properties` 或 `application.yml`。

示例7:

application-test.properties

server.port=8080


### 2.5 application.properties 或 application.yml

`application.properties` 或 `application.yml` 是默认的配置文件名,它们的作用范围是全局的,即所有的环境都会生效。这种方式的优先级最低。

示例8:
```yaml
# application.yml
server:
  port: 8080

通过以上内容的介绍,相信大家已经对 Spring Boot 配置文件的加载位置与优先级问题有了更深入的了解。如果还有疑问,欢迎在评论区留言,我们一起来讨论。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot 配置文件加载位置与优先级问题详解 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • 三大Win10新累积更新KB3206632/KB3205383/KB3205386补丁推送 附修复内容

    三大Win10新累积更新KB3206632/KB3205383/KB3205386补丁推送 附修复内容攻略 简介 最近,微软推出了三个重要的累积更新补丁,分别是KB3206632、KB3205383和KB3205386。这些补丁旨在修复一些Windows 10操作系统中的问题和漏洞,并提供更好的性能和稳定性。本攻略将详细介绍这三个补丁的安装过程和修复内容。 …

    other 2023年8月3日
    00
  • Unity&Springboot实现本地登陆验证

    Unity&Springboot实现本地登陆验证 概述 在开发Unity App时,通常需要使用到用户登陆验证功能,以确保用户的数据安全。本攻略将介绍如何使用Springboot搭建本地登陆验证服务,并在Unity中调用该服务实现登陆验证功能。 技术栈 Springboot Mybatis MySQL Unity C#语言 步骤 1. 创建Sprin…

    other 2023年6月26日
    00
  • iOS13.2.3正式版固件下载 iOS13.2.3更新内容及全机型固件下载地址

    iOS13.2.3正式版固件下载攻略 iOS13.2.3是苹果公司最新发布的iOS操作系统版本。本攻略将详细介绍iOS13.2.3正式版固件的下载方法,并提供iOS13.2.3更新内容及全机型固件下载地址。 iOS13.2.3更新内容 iOS13.2.3更新内容主要包括以下方面的改进和修复: 修复了邮件应用程序的问题:iOS13.2.3修复了在某些情况下无法…

    other 2023年8月4日
    00
  • @Autowired注解在抽象类中失效的原因及解决

    自动装配(autowiring)是Spring框架提供的一种便捷的方式,可以自动将相互依赖的组件(bean)注入到Java类中。@Autowired注解可以实现自动注入,但是在抽象类中有时会失效。下面是@Autowired注解在抽象类中失效的原因及解决方案的完整攻略。 原因 @Autowire注解功能实现的原理是Spring容器在启动时,扫描所有使用@Com…

    other 2023年6月26日
    00
  • ip和端口的相关检测

    IP和端口的相关检测 在网络通信中,我们经常需要检测IP和端口的可用性,以确保网络连接的稳定性和安全性。以下是IP和端口的相关检测的完整攻略。 步骤 以下是IP和端口的相关检测的步骤: 使用ping命令检测IP的可用性。 使用telnet命令检测端口的可用性。 示例 以下是两个示例,演示如何使用ping和telnet命令检测IP和端口的可用性。 示例1:使用…

    other 2023年5月6日
    00
  • Lua字符串库(string库)学习笔记

    Lua字符串库(string库)学习笔记 Lua字符串是像其他编程语言中字符串一样的不可变的序列。Lua提供了强大的字符串操作方法来帮助我们对字符串进行处理。本篇笔记将详细讲解Lua字符串库(string库)的常用方法。 Lua字符串的基本操作 字符串长度 字符串长度用 # 进行求值,例如: local str = "hello world&quo…

    other 2023年6月20日
    00
  • php使用sql数据库 获取字段问题介绍

    “php使用sql数据库获取字段问题介绍”的完整攻略如下: 1. 连接数据库 使用mysqli_connect()函数连接数据库。该函数需要传入四个参数分别是数据库服务器地址、数据库用户名、数据库密码和数据库名。连接成功后,会返回数据库连接对象。 示例代码: $link = mysqli_connect(‘localhost’, ‘root’, ‘passw…

    other 2023年6月25日
    00
  • 你真的了解java单例模式了吗?

    当我们在编写Java程序时,可能会需要某些类在整个程序运行周期内只能有一个实例被创建。这个时候,就可以采用单例(Singleton)模式。 单例模式是一种创建型设计模式。在单例模式中,一个类只允许有一个实例,而且该实例易于被外界访问。在很多情况下,对象如果被实例化多次可能会产生不必要的开销,如资源消耗、多次处理等。因此使用单例模式可以避免这种情况的产生。 下…

    other 2023年6月26日
    00
合作推广
合作推广
分享本页
返回顶部