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日

相关文章

  • Winrar右键没有压缩选项怎么办?Winrar右键没有压缩选项找回方法

    如果在Windows中安装了Winrar压缩软件,但是在右键菜单中却没有出现“压缩”或“添加到已压缩文件”等Winrar压缩选项,可能会让你感到困惑。以下是找回Winrar右键菜单压缩选项的方法。 方法1:检查Winrar设置 打开Winrar软件,在菜单栏中单击“选项”。 在弹出的“设置”窗口中,选择“集成”,确保“解压”和“压缩”选项都被勾选。 确认之后…

    other 2023年6月27日
    00
  • PhpStorm 如何优雅的调试Hyperf的方法步骤

    PHPStorm 是一款功能强大的 IDE,我们可以通过它快速地进行代码编辑、调试和测试。如果我们需要开发和调试 Hyperf 应用程序,这里介绍一种优雅的调试方法。 步骤: 安装 Hyperf Debug 插件 在代码编辑器 PHPStorm 中,找到 Settings -> Plugins 进入插件管理页面,搜索 Hyperf Debug 插件并安…

    other 2023年6月27日
    00
  • 浅析C++中结构体的定义、初始化和引用

    下面是详细的讲解关于“浅析C++中结构体的定义、初始化和引用”的完整攻略。 结构体的定义 在C++中,结构体是一种数据类型,可以包含不同类型的数据成员。定义结构体的语法格式如下: struct 结构体名{ 数据类型1 成员名1; 数据类型2 成员名2; … }; 其中,结构体名可以自定义,成员名和数据类型可以按需指定。 例如,定义一个学生结构体Stude…

    other 2023年6月20日
    00
  • Android百度地图定位后获取周边位置的实现代码

    Android百度地图定位后获取周边位置的实现代码攻略 步骤1:添加依赖库 首先,在你的Android项目中添加百度地图SDK的依赖库。在你的项目的build.gradle文件中添加以下代码: dependencies { implementation ‘com.baidu.android:location:8.0.0’ implementation ‘co…

    other 2023年8月20日
    00
  • nginx could not build the server_names_hash 解决方法

    当我们在使用nginx作为web服务器时,可能会出现类似“nginx could not build the server_names_hash”的错误提示。这个错误通常是由于nginx中定义的server name太多,超出了默认的hash bucket size所致。 要解决这个问题,我们需要改变nginx配置中的server_names_hash_ma…

    other 2023年6月27日
    00
  • vue常用属性汇总

    以下是关于Vue常用属性的完整攻略,包括属性的定义、使用方法、示例说明和注意事项。 属性的定义 在Vue中,属性是指组件或实例中的数据或方法。属性可以通过data、props、computed、methods等选项来定义和使用。 data:用于定义组件或实例中的数据。 props:用于定义组件之间传递的数据。 computed:用于定义计算属性,即根据已有属…

    other 2023年5月8日
    00
  • Google Analytics过滤设置图文教程

    当然!下面是关于\”Google Analytics过滤设置图文教程\”的完整攻略: Google Analytics过滤设置图文教程 Google Analytics是一款强大的网站分析工具,可以帮助你了解网站的访问情况和用户行为。在Google Analytics中,你可以设置过滤器来排除一些无效的数据或者只关注特定的数据。下面是一些关于Google A…

    other 2023年8月19日
    00
  • 提升WIFI信号强度(提高网速)的10大方法

    当需要增强WIFI信号强度从而改善网速时,以下是一些可行的方法: 方法一:重新定位路由器 路由器的位置会影响WIFI信号质量。理想的布置应使其尽可能接近您常用设备,不要放在隔板、金属箱子或其他干扰物附近。 方法二:在路由器范围内添加信号扩展器 如果您住在较大的房子中,添加信号扩展器可延伸良好的WIFI覆盖范围。但是,扩展器并不一定能增加WIFI速度,因为它只…

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