Spring_Cloud_Finchley.SR1文档对SpringCloud配置文件优先级的描述

简介: Spring_Cloud_Finchley.SR1文档对SpringCloud配置文件优先级的描述

不同位置配置文件的优先级

相同位置配置文件执行顺序

bootstrap.yml(bootstrap.properties)用来程序引导时执行,应用于更加早期配置信息读取,如可以使用来配置application.yml中使用到参数等

application.yml(application.properties) 应用程序特有配置信息,可以用来配置后续各个模块中需使用的公共参数等。

bootstrap.yml 先于 application.yml 加载

Because of the ordering rules of property sources, the “bootstrap” entries take precedence. However, note that these do not contain any data from bootstrap.yml,which has very low precedence but can be used to set defaults

因为资源文件有次序的规则,所以bootstrap实体具体更高的优先级,然而,注意不是 bootstrap.yml里所有的数据数据都这样,有些的优先级很低,但是被设置成了默认值

应用上下文层次结构

The bootstrap context is the parent of the most senior ancestor that you create yourself. If the child has a property source with the same name as the parent, the value from the parent is not included in the child

bootstrap context是你创建所有context的祖先,如果孩子和父辈有相同配置资源,则父辈的配置资源会生效,而不是孩子

覆盖远程属性

property sourcesbootstrap context 添加到应用通常通过远程的方式,比如”Config Server”。默认情况下,本地的配置文件不能覆盖远程配置,但是可以通过启动命令行参数来覆盖远程配置。如果需要本地文件覆盖远程文件,需要在远程配置文件里设置授权

spring.cloud.config.allowOverride=true(这个配置不能在本地被设置)。一旦设置了这个权限,你可以配置更加细粒度的配置来配置覆盖的方式,

比如:

- spring.cloud.config.overrideNone=true 覆盖任何本地属性

- spring.cloud.config.overrideSystemProperties=false 仅仅系统属性和环境变量

源文件见PropertySourceBootstrapProperties

自定义启动配置

The bootstrap context can be set to do anything you like by adding entries to /METAINF/spring.factories under a key named org.springframework.cloud.bootstrap.BootstrapConfiguration. This holds a comma-separated list of Spring @Configuration classes that are used to create the context.If you want to control the startup sequence,

classes can be marked with an @Order annotation (the default order is last).

 

bootstrap context 里还能通过 /METAINF/spring.factories下一个key叫org.springframework.cloud.bootstrap.BootstrapConfiguration添加你自己想要的类实体,这是一个使用逗号分隔的Spring @Configuration类列表,这些类用于创建、上下文。如果你想控制类的启动顺序可以通过@Order注解(默认是在最后)

# spring-cloud-context-1.1.1.RELEASE.jar
# spring.factories
# AutoConfiguration
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration,\
org.springframework.cloud.autoconfigure.RefreshAutoConfiguration,\
org.springframework.cloud.autoconfigure.RefreshEndpointAutoConfiguration,\
org.springframework.cloud.autoconfigure.LifecycleMvcEndpointAutoConfiguration
# Application Listeners
org.springframework.context.ApplicationListener=\
org.springframework.cloud.bootstrap.BootstrapApplicationListener,\
org.springframework.cloud.context.restart.RestartListener
# Bootstrap components
org.springframework.cloud.bootstrap.BootstrapConfiguration=\
org.springframework.cloud.bootstrap.config.PropertySourceBootstrapConfiguration,\
org.springframework.cloud.bootstrap.encrypt.EncryptionBootstrapConfiguration,\
org.springframework.cloud.autoconfigure.ConfigurationPropertiesRebinderAutoConfiguration,\
org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration

具体例子见 Spring Cloud使用BootstrapConfiguration配置启动加载项_不夜城的油条的博客-CSDN博客

自定义引导配置来源:Bootstrap Property Sources

The default property source for external configuration added by the bootstrap process is the Spring Cloud Config Server, but you can add additional sources by adding beans of type PropertySourceLocator to the bootstrap context (through spring.factories). As an example, consider the following custom locator:

添加外部配置文件为默认属性是被Spring Cloud Config Server的bootstrap context 处理的,但是你可以通过PropertySourceLocator 向bootstrap context添加额外的资源。例如,下面的自定义定位器

@Configuration
public class CustomPropertySourceLocator implements PropertySourceLocator 
  @Override
  public PropertySource<?> locate(Environment environment) {
     return new MapPropertySource("customProperty",
     Collections.<String,Object>singletonMap("property.from.sample.custom.source", "worked as intended"));
  }
}

具体例子见 springboot自定义配置源 - atheva - 博客园

参考文章

SpringCloud入门之常用的配置文件 application.yml和 bootstrap.yml区别 - JackYang - 博客园

SpringBoot配置文件的优先级_Little_fxc的博客-CSDN博客_springboot配置文件的优先级


相关文章
|
1月前
|
XML Java 数据格式
Spring从入门到入土(xml配置文件的基础使用方式)
本文详细介绍了Spring框架中XML配置文件的使用方法,包括读取配置文件、创建带参数的构造对象、使用工厂方法和静态方法创建对象、对象生命周期管理以及单例和多例模式的测试。
88 7
Spring从入门到入土(xml配置文件的基础使用方式)
|
26天前
|
Java API Spring
在 Spring 配置文件中配置 Filter 的步骤
【10月更文挑战第21天】在 Spring 配置文件中配置 Filter 是实现请求过滤的重要手段。通过合理的配置,可以灵活地对请求进行处理,满足各种应用需求。还可以根据具体的项目要求和实际情况,进一步深入研究和优化 Filter 的配置,以提高应用的性能和安全性。
|
1月前
|
Java 测试技术 Spring
springboot学习三:Spring Boot 配置文件语法、静态工具类读取配置文件、静态工具类读取配置文件
这篇文章介绍了Spring Boot中配置文件的语法、如何读取配置文件以及如何通过静态工具类读取配置文件。
54 0
springboot学习三:Spring Boot 配置文件语法、静态工具类读取配置文件、静态工具类读取配置文件
|
1月前
|
负载均衡 Java API
【Spring Cloud生态】Spring Cloud Gateway基本配置
【Spring Cloud生态】Spring Cloud Gateway基本配置
37 0
|
2月前
|
消息中间件 NoSQL 安全
(转)Spring Boot加载 不同位置的 application.properties配置文件顺序规则
这篇文章介绍了Spring Boot加载配置文件的顺序规则,包括不同位置的application.properties文件的加载优先级,以及如何通过命令行参数或环境变量来指定配置文件的名称和位置。
|
3月前
|
Java Spring
【Azure Spring Cloud】Spring Cloud Azure 4.0 调用Key Vault遇见认证错误 AADSTS90002: Tenant not found.
【Azure Spring Cloud】Spring Cloud Azure 4.0 调用Key Vault遇见认证错误 AADSTS90002: Tenant not found.
|
3月前
|
Java Spring 传感器
AI 浪潮席卷,Spring 框架配置文件管理与环境感知,为软件稳定护航,你还在等什么?
【8月更文挑战第31天】在软件开发中,配置文件管理至关重要。Spring框架提供强大支持,便于应对不同环境需求,如电商项目的开发、测试与生产环境。它支持多种格式的配置文件(如properties和YAML),并能根据环境加载不同配置,如数据库连接信息。通过`@Profile`注解可指定特定环境下的配置生效,同时支持通过命令行参数或环境变量覆盖配置值,确保应用稳定性和可靠性。
62 0
|
3月前
|
Java Spring 容器
【Azure Spring Cloud】在Azure Spring Apps上看见 App Memory Usage 和 jvm.menory.use 的指标的疑问及OOM
【Azure Spring Cloud】在Azure Spring Apps上看见 App Memory Usage 和 jvm.menory.use 的指标的疑问及OOM
|
3月前
|
存储 Java Spring
【Azure Spring Cloud】Azure Spring Cloud服务,如何获取应用程序日志文件呢?
【Azure Spring Cloud】Azure Spring Cloud服务,如何获取应用程序日志文件呢?
|
3月前
|
SQL Java 数据库连接
【Azure Spring Cloud】Azure Spring Cloud connect to SQL using MSI
【Azure Spring Cloud】Azure Spring Cloud connect to SQL using MSI
下一篇
无影云桌面