我买了台云服务器部署了nacos,我的配置如下:将配置文件拆分为多个文件,在用include引用,结果云服务器配置中心的配置一直引用失败
于是我在本机部署了nacos,修改了server-addr并把配置移到了本地的nacos中,结果好使了,然后我关闭本地nacos服务器端再次换回云服务器地址,结果也好使了????what the fuck??下面来解释原因(个人见解)。结尾附应用、共享、拓展配置文件取名示例
在spring boot自动装配的过程中,会加载NacosConfigBootstrapConfiguration
在这个类中会接着创建NacosConfigPropertie和NacosConfigManager以及NacosPropertySourceLocator三个类,下面是三个类的解析和图解:
因为bootstrap配置类是早于所有关于nacos的配置类的,如果你不把adress配置放置在bootstrap里那么他一定会从nacos默认的地址去查你的配置所有文件。
NacosConfigBootstrapConfiguration类
配置文件初始化
NacosConfigManager初始化
点进createConfigService方法,到configFactory创建service实例
此处可以看到地址为127.0.0.1:8848,接着再去创建NacosPropertySourceLocator都会有问题了
应该是卡了,我关闭本地服务器估计是没关上,关机就重启就拉不到了
把nacos的服务器信息的配置放到bootstrap.yml中,就可以了
spring: application: name: gateway-service profiles: active: @profiles.active@ cloud: nacos: config: server-addr: @nacos.config.address@ namespace: @nacos.config.namespace@ username: nacos password: nacos file-extension: yml # 共享配置 shared-configs: - data-id: application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} # 默认为DEFAULT_GROUP group: DEFAULT_GROUP # 是否动态刷新,默认为false refresh: true #扩展配置 # 优先级大于 shared-configs,在 shared-configs 之后加载 extension-configs: - data-id: skipURL.yml group: DEFAULT_GROUP refresh: true - data-id: jwt.yml group: DEFAULT_GROUP refresh: true