关于spring cloud本地配置覆盖nacos配置的问题(override-none不符合我的情况)

spring.cloud.config.override-none=true
这个属性配置完之后本地的配置确实覆盖了nacos的配置
但是连jar包里的配置也覆盖掉了nacos里的配置
我想要的优先级是src里我创建的本地配置第一
nacos里的第二
jar包里的配置第三
有没有什么办法实现这种方式

你好,你指的jar包里边的配置是?这个我还没涉及过顺便学习下

首先编译后只有classpath和配置中心的配置了,其次springcloud采用PropertySourceLocator接口去获取配置,最终组装成PropertySource,然后添加到environment中,PropertySourceBootstrapConfiguration.insertPropertySources方法中(本质上spring是不知道你哪些配置被覆盖了,只根据PropertySource的先后,谁在前并且获取到了配置,就使用你,而不是一个个的对比确定谁已经存在),默认的几个处理,addFirst ,addLast,propertySources.addAfter(SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME, p);propertySources.addBefore(SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME, p);
这几个方案估计都达不到你想要的结果

img


如果你想要部分配置自己可以控制而不走配置中心,那单独拿出来,自己实现PropertySourceLocator并且早于配置中心实现的PropertySourceLocator加载,单独处理这部分配置,这样即使在默认规则下的配置,排序也是在最前面,会用你的而不是配置中心的