java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > springcloud本地配置优先

springcloud本地配置优先方式

作者:火冰鬼舞

这篇文章主要介绍了springcloud本地配置优先方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

springcloud本地配置优先

如果我们的项目使用了远程配置中心,就会使用远程配置优先。可在实际开发中,通常我们需要本地的部分配置优先于远程配置,方便开发调试。

spring cloud为我们提供了相关的配置:

使用propertise配置

1.不适用远程配置

默认值是true,不要调整成false, 可以不配置,使用默认即可

# 如果想要远程配置优先级高,那么 allow-override 设置为 false,如果想要本地配置优先级高那么 allow-override 设置为 true
spring.cloud.config.allow-override=true

2.本地文件优先

# 如果本地配置优先级高,那么 override-none 设置为 true,包括系统环境变量、本地配置文件等配置
spring.cloud.config.override-none=true

3.远程配置只覆盖本地配置文件

# 只有系统环境变量或者系统属性才能覆盖远程配置文件的配置,本地配置文件中配置优先级低于远程配置;注意本地配置文件不是系统属性      
spring.cloud.config.override-system-properties=false

2或3任意配置即可,只会生效一种。

使用yml配置同properties一样:

spring:
  cloud:
    config:
      # 如果本地配置优先级高,那么 override-none 设置为 true,包括系统环境变量、本地配置文件等配置
      override-none: true
      # 如果想要远程配置优先级高,那么 allow-override 设置为 false,如果想要本地配置优先级高那么 allow-override 设置为 true
      allow-override: true
      # 只有系统环境变量或者系统属性才能覆盖远程配置文件的配置,本地配置文件中配置优先级低于远程配置;注意本地配置文件不是系统属性
      override-system-properties: false

配置到这里,可能就会去尝试。不过当你配置完成后会发觉,好像配置没有生效。

不要着急,我们继续分析。

上源码:

org.springframework.cloud.bootstrap.config.PropertySourceBootstrapConfiguration#insertPropertySources

我们反向看一下:

从结果发现,composite中的配置全部是来自与远程配置。

所以如果你需要本地配置优先,需要把上面的配置放在远程配置中的配置文件中才可以生效

同时需要注意文件顺序:

快去试一下效果吧!!~~~~~~~~~~~~~~~~~~~~

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文