在Spring Boot中,加载配置文件的优先级按照以下顺序进行,后续的配置会覆盖之前的配置:
-
默认属性:这些属性在Spring Boot本身中定义,并且通常是不可变的。它们作为后备值。
-
应用程序属性 :这些属性在应用程序的
application.properties
或application.yml
文件中定义。它们提供了默认的配置。 -
特定配置文件属性 :这些属性在特定于活动Spring配置文件的
application-{profile}.properties
或application-{profile}.yml
文件中定义,其中{profile}
对应于活动的Spring配置文件。当相应的配置文件处于活动状态时,这些属性将覆盖默认属性。 -
配置服务器属性:这些属性是从Spring Cloud配置服务器获取的。它们会覆盖应用程序本地配置文件中定义的属性。
如果一个属性在多个位置定义,则最后应用的属性会覆盖之前的属性。因此,如果一个属性在 application.properties
和 application-dev.properties
中都定义了,当 dev
配置文件处于活动状态时,application-dev.properties
中的值将覆盖 application.properties
中的值。
类似地,如果一个属性同时在本地配置文件(application.properties
、application-dev.properties
)中定义,并且从配置服务器中获取,则配置服务器中的值会覆盖本地值。
总而言之,优先级顺序为:
- 默认属性
- 应用程序属性
- 特定配置文件属性
- 配置服务器属性