当前位置: 首页 > 知识库问答 >
问题:

spring cloud配置中属性的加载优先级是什么?

苗森
2023-03-14

spring对加载外部化配置有明确的命令。

  1. 主目录上的devtools全局设置属性(~/.-boot-devtools.properties当devtools处于活动状态时)。
  2. @TestPropertySource对测试的注释。
  3. @springboottest#properties注释属性。
  4. 命令行参数。
  5. 来自SPRING_APPLICATION_JSON(嵌入环境变量或系统属性中的内联JSON)的属性。
  6. ServletConfig初始化参数。
  7. ServletContext初始化参数。
  8. 来自Java的JNDI属性:comp/env。
  9. Java系统属性(System.GetProperties())。
  10. OS环境变量。
  11. 仅在random.*中具有属性的RandomValuePropertySource。
  12. 打包的jar之外的配置html" target="_blank">文件特定的应用程序属性(application-{profile}.properties和YAML变体)。
  13. 封装在jar中的特定于配置文件的应用程序属性(application-{profile}.properties和YAML变体)。
  14. 打包的jar之外的应用程序属性(application.properties和YAML变体)。
  15. 封装在jar中的应用程序属性(application.properties和YAML变体)。
  16. @PropertySource在@Configuration类上的批注。
  17. 默认属性(通过设置SpringApplication.SetDefaultProperties指定)。

然而,似乎有一个明显的省略来自spring cloud配置的配置。有没有人知道上面spring cloud配置的位置

共有2个答案

公羊兴文
2023-03-14

文件指出:

bootstrap属性作为高优先级属性源显示在/env端点中,如下例所示

所以它将是位置#0

艾泉
2023-03-14

正如其他人所说的,config-server是第一位的。如果您试图用本地属性(即application-local.yml)重写config-server的属性,则需要向config-server**添加两个属性:

spring.cloud.config.allowOverride=true
spring.cloud.config.overrideNone=true

根据文档:

由引导上下文添加到应用程序中的属性源通常是“远程”的(例如,从配置服务器),并且默认情况下不能在本地覆盖它们。如果您希望允许应用程序使用它们自己的系统属性或配置文件覆盖远程属性,远程属性源必须通过设置spring.cloud.config.allowOverride=true来授予它权限(在本地设置该权限不起作用)。一旦设置了该标志,就会有一些更细粒度的设置来控制远程属性相对于系统属性和应用程序的本地配置的位置:spring.cloud.config.overridenone=true可以用任何本地属性源重写;spring.cloud.config.overridesystemproperties=false如果只有系统属性和env变量应该重写远程设置,而不是本地配置文件。

还请参阅以下内容,有关使用spring.cloud.config.override-system-properties=false通过系统/命令行属性重写。上面引用的文档有/有一个不一致的地方,我把它从引用中删除了。

注意,如果希望远程配置服务器重写本地属性文件源,但不重写本地系统属性或环境属性,请在配置服务器中添加以下内容:

spring.cloud.config.allowOverride=true
spring.cloud.config.overrideNone=false
spring.cloud.config.overrideSystemProperties=false

**在这种情况下,忽略overridesystemproperties值。请参阅org.springframework.cloud.bootstrap.config.propertysourcebootstrapconfiguration#insertpropertysources

 类似资料:
  • 本文向大家介绍springcloud config配置读取优先级过程详解,包括了springcloud config配置读取优先级过程详解的使用技巧和注意事项,需要的朋友参考一下 情景描述 最近在修复Eureka的静态页面加载不出的缺陷时,最终发现是远程GIT仓库将静态资源访问方式配置给禁用了(spring.resources.add-mappings=false)。虽然最后直接修改远程GIT仓库

  • 我正在做一个新的项目,第一次使用Spring-Boot。 传统上,在使用Spring和属性文件进行配置时,我在发行版(WAR)中提供了默认属性,并允许在某个文档位置重写它们。 例如: 这将允许我们在不丢失本地系统配置的情况下重新部署应用程序。 我喜欢Spring,因为它允许我们遵守惯例,这让我担心我可能做错了属性级联。 什么是提供包含在发行版中的外部化属性的最合适的方法,该属性具有合理的默认值(嵌

  • Spring启动版本:2.5.0 null 其中@prodprofile@的值来自pom.xml的配置文件配置部分。 如果在application-prod.properties和application-local.properties中有相同的属性,哪个优先?当我测试时,我发现特定配置文件具有优先级。无法用Spring.Config.Import重写属性值。是预期行为吗?

  • 问题内容: 在Java教程优先级表中,plus运算符的优先级仅列出一次。但是以下Java表达式: 结果如下: 这是否意味着加号运算符在用于连接字符串时具有较高的优先级,或者是说加号运算符的优先级对于字符串和数字没有什么不同,只是简单地从左到右求值? 问题答案: 总是 从左到右 流动 __ 在您的第一个示例中,string首先出现,然后是int值,因此1被视为string。 在第二个示例中,您使用的

  • 本文向大家介绍什么是用例优先级?相关面试题,主要包含被问及什么是用例优先级?时的应答技巧和注意事项,需要的朋友参考一下 ② 高:最常执行以保证功能性是稳定的,目标的行为和能力可以正常的工作,和重要的错误和边界被测试的测试用例的集合。 ③ 中:这是使给出的功能区域或功能变得更详细,检查功能的多数方面包括边界,错误和配置测试的测试用例。 ④ 低:这是通常最少被执行的测试用例。但这并不意味着这些测试都不

  • 在我的Spring Boot程序中,由于加载时的属性值不好,我得到了一个失败。特别是,它使用DB2Hibernate方言,但它没有在我所使用的属性文件中定义。 假设没有注释,Spring在哪里查找属性文件?是的,我知道它通常位于src/main/resources/application.properties中 如果我在测试用例中有一个属性,该怎么办;它是否忽略了main中的一个而使用了test中