SpringBoot3整合SpringCloud啟動后nacos報錯獲取不到配置、無法注冊服務的解決方案
場景
嘗試從零搭建一個微服務項目,搭建基本框架后,本地啟動程序連接遠程nacos報錯
一、依賴版本信息?
- SpringBoot 3.3.4
- SpringCloud 2023.0.3
- SpringCloudAlibaba 2023.0.3.2
- 阿里云部署nacos版本2.3.2
如果需要使用到nacos的服務注冊發(fā)現(xiàn)及配置中心的功能,那么要先保障引入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導入配置
如果出現(xiàn)以下報錯,提示配置文件不存在,在確保配置文件名稱是正確的情況下,并且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,并且服務注冊發(fā)現(xiàn)和配置拉取都是正常,如果有遇到其他問題,也歡迎留言。
到此這篇關于解決SpringBoot3整合SpringCloud啟動后nacos報錯獲取不到配置、無法注冊服務的文章就介紹到這了,更多相關SpringBoot3整合SpringCloud啟動nacos報錯內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
詳解Java8?CompletableFuture的并行處理用法
Java8中有一個工具非常有用,那就是CompletableFuture,本章主要講解CompletableFuture的并行處理用法,感興趣的小伙伴可以了解一下2022-04-04java開發(fā)中基于JDBC連接數(shù)據(jù)庫實例總結
這篇文章主要介紹了java開發(fā)中基于JDBC連接數(shù)據(jù)庫的方法,以實例形式較為詳細的總結分析了Java使用JDBC的具體步驟與注意事項,并附帶了一個完整實例加以說明,需要的朋友可以參考下2015-11-11