SpringBoot3整合SpringCloud启动后nacos报错获取不到配置、无法注册服务的解决方案
作者:zsd99zz
文章介绍了如何使用Spring Boot 3.3.4和Spring Cloud 2023.0.3搭建微服务项目,并解决与Nacos服务注册发现和配置中心的集成问题,主要解决了依赖版本不兼容、配置文件导入问题及服务注册失败等问题,感兴趣的朋友跟随小编一起看看吧
场景
尝试从零搭建一个微服务项目,搭建基本框架后,本地启动程序连接远程nacos报错
一、依赖版本信息?
- SpringBoot 3.3.4
- SpringCloud 2023.0.3
- SpringCloudAlibaba 2023.0.3.2
- 阿里云部署nacos版本2.3.2
如果需要使用到nacos的服务注册发现及配置中心的功能,那么要先保障引入nacos服务注册和nacos配置中心的依赖
<!-- nacos 服务注册中心 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!-- nacos 配置中心 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
想直接看配置的也可以参考下面最终配置文件
server: port: 9001 spring: application: name: auth-custom profiles: active: @profiles.active@ cloud: nacos: username: nacos password: nacos discovery: server-addr: nacos的IP+端口 # 具体分组名看nacos客户端你是怎么配置的,一定要和nacos客户端一致 group: DEFAULT_GROUP # 看服务是分属哪个命名空间的,一定要和nacos客户端中命名空间的ID一致 namespace: 705b282b-1699-488f-8b84-b8b920c29432 config: server-addr: nacos的IP+端口 # 具体分组名看nacos客户端你是怎么配置的,一定要和nacos客户端一致 group: DEFAULT_GROUP # 看服务是分属哪个命名空间的,一定要和nacos客户端中命名空间的ID一致 namespace: 705b282b-1699-488f-8b84-b8b920c29432 file-extension: yaml # 如果nacos客户端有启动鉴权,将nacos配置文件中的secret-key的值粘贴过来 secret-key: nacos配置文件中secret-key的值 config: import: - nacos:application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} - nacos:${spring.application.name}-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
二、 报错信息
1.No spring.config.import property has been defined
解决方法:
因为启动文件是bootstrap.yml,springcloud 2020.0.2版本中把bootstrap的相关依赖从spring-cloud-starter-config中移除了,需要单独引入spring-cloud-starter-bootstrap的依赖。
<!-- bootstrap依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> </dependency>
2.本地可以登录远程nacos控制台,但是服务注册不上去,服务管理中的服务列表中是空的。但是如果连接本地nacos,服务能正常注册上去,服务列表中能查看到相应的微服务
解决方案
1、确保引入注册中心依赖
2、确保nacos客户端的IP和端口是正确的,并且group和namespace的值要与nacos客户端一致
3、云服务器安全组需要开放8848、9848、9849 这个端口出来
3、 配置文件不存在 或 读取不到配置文件中的属性
解决方案
SpringBoot3兼容的SpirngCloud版本需要使用spring.config.import导入配置
如果出现以下报错,提示配置文件不存在,在确保配置文件名称是正确的情况下,并且nacos客户端是开启鉴权的,那么在配置文件中加上secret-key属性值
Config data resource 'NacosConfigDataResource{properties=NacosConfigProperties{serverAddr='8.138.136.74:8848', encode='null', group='DEFAULT_GROUP', prefix='null', fileExtension='yaml', timeout=3000, maxRetry='null', configLongPollTimeout='null', configRetryTime='null', enableRemoteSyncConfig=false, endpoint='null', namespace='705b282b-1699-488f-8b84-b8b920c29432', accessKey='null', secretKey='null', ramRoleName='null', contextPath='null', clusterName='null', name='null'', shares=null, extensions=null, refreshEnabled=true}, optional=false, profiles=[Profiles@4287d447 active = '[dev]', default = '[default]', accepted = '[dev]'], config=NacosItemConfig{group='DEFAULT_GROUP', dataId='auth-custom-dev.yaml', suffix='yaml', refreshEnabled=true, preference=null}}' via location 'nacos:auth-custom-dev.yaml' does not exist Action: Check that the value 'nacos:auth-custom-dev.yaml' at class path resource [bootstrap.yml] - 24:9 is correct, or prefix it with 'optional:'
总结
正常按照提供的yaml文件,是能正常连接上nacos,并且服务注册发现和配置拉取都是正常,如果有遇到其他问题,也欢迎留言。
到此这篇关于解决SpringBoot3整合SpringCloud启动后nacos报错获取不到配置、无法注册服务的文章就介绍到这了,更多相关SpringBoot3整合SpringCloud启动nacos报错内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!