项目场景:
在使用springCloud的nacos进行配置统一管理时,我们需要把application配置文件上传至nacos配置中心,这就要求我们做一定的配置,将我们开发的项目和nacos配置中心关联起来。
如何进行nacos config配置,我这里就不多说了,这里简述我在配置完成后启动项目遇到的一个问题。
问题描述:
当配置完成后,启动项目,控制台报如下错误
com.alibaba.nacos.api.exception.NacosException: null
at com.alibaba.nacos.api.config.ConfigFactory.createConfigService(ConfigFactory.java:45) ~[nacos-api-1.0.0.jar:na]
at com.alibaba.nacos.api.NacosFactory.createConfigService(NacosFactory.java:41) ~[nacos-api-1.0.0.jar:na]
at org.springframework.cloud.alibaba.nacos.NacosConfigProperties.configServiceInstance(NacosConfigProperties.java:343) ~[spring-cloud-alibaba-nacos-config-0.2.2.RELEASE.jar:0.2.2.RELEASE]
at org.springframework.cloud.alibaba.nacos.NacosConfigAutoConfiguration.nacosContextRefresher(NacosConfigAutoConfiguration.java:63) [spring-cloud-alibaba-nacos-config-0.2.2.RELEASE.jar:0.2.2.RELEASE]
at org.springframework.cloud.alibaba.nacos.NacosConfigAutoConfiguration$$EnhancerBySpringCGLIB$$a46811b7.CGLIB$nacosContextRefresher$3(<generated>) [spring-cloud-alibaba-nacos-config-0.2.2.RELEASE.jar:0.2.2.RELEASE]
at org.springframework.cloud.alibaba.nacos.NacosConfigAutoConfiguration$$EnhancerBySpringCGLIB$$a46811b7$$FastClassBySpringCGLIB$$ac56d926.invoke(<generated>) [spring-cloud-alibaba-nacos-config-0.2.2.RELEASE.jar:0.2.2.RELEASE]
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) [spring-core-5.2.1.RELEASE.jar:5.2.1.RELEASE]
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:363) [spring-context-5.2.1.RELEASE.jar:5.2.1.RELEASE]
at org.springframework.cloud.alibaba.nacos.NacosConfigAutoConfiguration$$EnhancerBySpringCGLIB$$a46811b7.nacosContextRefresher(<generated>) [spring-cloud-alibaba-nacos-config-0.2.2.RELEASE.jar:0.2.2.RELEASE]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_211]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_211]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_211]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_211]
原因分析:
反复检查之后,发现自己的两个错误:
问题1:在bootstrap.properties配置文件中没有声明配置文件的命名空间,而自己nacos的配置文件放在了dev命名空间下,如下图展示
解决方案:
在bootstrap.properties配置文件中增加命名空间的配置
#切换dev命名空间
spring.cloud.nacos.config.namespace=b892d5dcc-fsf2-42897-88tb-32dd55d2d5d
问题二:当我们把配置文件上传至nacos配置中心时,其中包含了nacos服务发现的一条配置信息,而项目的bootstrap.properties配置文件也需要增加一条nacos配置中心的配置信息,二者不相同,但是我把这两条不同的配置信息错看成一样的了!!!
下面让我们仔细看一下这两条配置信息
在bootstrap.properties配置文件中
#配置中心地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
而上传至nacos配置中心的配置文件中包含的配置信息(服务发现)
#服务发现
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
仔细观察,虽然他们的value值都是127.0.0.1:8848,但是他们的key不同哦,这两条配置信息实在是太像了,找了好久才发现,大家注意一下自己的配置文件,正确修改过来,再次启动,就不会报错啦,以上两点,希望能帮助到大家。