项目场景:
跟着视频开发 谷粒商城,其中 需要将 renren-fast 注册到nacos上。而我项目却启动不起来
问题描述:
欢迎使用 renren-fast 人人快速开发平台 - Powered By https://www.renren.io/
====================================================================================================================
2021-03-03 11:10:00.555 ERROR [,,,] 24972 --- [ main] c.a.cloud.nacos.NacosConfigProperties : create config service error!properties=NacosConfigProperties{serverAddr='null', encode='null', group='DEFAULT_GROUP', prefix='null', fileExtension='properties', timeout=3000, endpoint='null', namespace='null', accessKey='null', secretKey='null', contextPath='null', clusterName='null', name='null', sharedDataids='null', refreshableDataids='null', extConfig=null},e=,
com.alibaba.nacos.api.exception.NacosException: java.lang.reflect.InvocationTargetException
at com.alibaba.nacos.api.config.ConfigFactory.createConfigService(ConfigFactory.java:45) ~[nacos-api-1.1.4.jar:na]
at com.alibaba.nacos.api.NacosFactory.createConfigService(NacosFactory.java:43) ~[nacos-api-1.1.4.jar:na]
at com.alibaba.cloud.nacos.NacosConfigProperties.configServiceInstance(NacosConfigProperties.java:346) ~[spring-cloud-alibaba-nacos-config-2.1.0.RELEASE.jar:2.1.0.RELEASE]
at com.alibaba.cloud.nacos.client.NacosPropertySourceLocator.locate(NacosPropertySourceLocator.java:63) [spring-cloud-alibaba-nacos-config-2.1.0.RELEASE.jar:2.1.0.RELEASE]
at org.springframework.cloud.bootstrap.config.Pr
问题:Nacos的config找不到,于是上网查找,说 bootstrap.properties 的优先级比 application.yml高,所以我新建了 该文件:如下
坑: 注意 这里是 config 而不是 discover
而我们想要 某个服务注册到 nacos上,那我们只需要3步即可:
1、pom添加依赖:
<!-- 服务注册/发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2、application.yml配置:
配置应用名字和 discovery的地址
3、启动类头上开启服务发现的注解
@EnableDiscoveryClient
原因分析:
renren-fast 引入了 gulimall-common 而guli-mall 中 引入了以下两个依赖
<!-- 服务注册/发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- 配置中心来做配置管理-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
所以,renren-fast 项目启动 就会因为引入 spring-cloud-starter-alibaba-nacos-config依赖 而去 Nacos上 加载配置文件,这时候往往我们还没有在nacos上新建其对应的配置文件。
印象中 不都是 服务模块 加载自己本地的 配置文件嘛 。然而,因为 引入了 spring-cloud-starter-alibaba-nacos-config这个jar包 就不会加载本地的了。所以项目启动不了
解决方案:
移除 gulimall-common 中 spring-cloud-starter-alibaba-nacos-config的依赖,但建议 renren-fast 直接引入 spring-cloud-starter-alibaba-nacos-discovery依赖 ,不再引入 gulimall-common。这样就能够启动项目了
总结:
项目做的太少,还傻傻忽略了:
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
这两个语句中单词的区别。 服务发现是服务发现,统一配置是统一配置,这是两码事,互不挨边!
如果单纯的建项目注册到 Nacos中心,记得 不要引入 spring-cloud-starter-alibaba-nacos-config依赖。