文章目录
- 一,com.alibaba.nacos.api.exception.NacosException: endpoint is blank
- 1,分析定位
- 2,关于配置文件application和bootstrap的区别与练习
- 加载顺序
- 使用说明
- 参考文献
一,com.alibaba.nacos.api.exception.NacosException: endpoint is blank
1,分析定位
启动项目时有如下错误日志打印。
2024-07-10 08:20:20.324 ERROR 10476 --- [ 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=,Caused by: com.alibaba.nacos.api.exception.NacosException: endpoint is blankat com.alibaba.nacos.client.config.impl.ServerListManager.<init>(ServerListManager.java:154) ~[nacos-client-1.1.1.jar:na]at com.alibaba.nacos.client.config.http.ServerHttpAgent.<init>(ServerHttpAgent.java:244) ~[nacos-client-1.1.1.jar:na]at com.alibaba.nacos.client.config.NacosConfigService.<init>(NacosConfigService.java:83) ~[nacos-client-1.1.1.jar:na]... 39 common frames omitted
显然,启动没有读取到配置文件bootstrap.properties中配置的nacos服务地址。
仔细检查文件名和配置,确实没发生错误,百思不得其解。
推测是项目没有读取配置文件,重启了好几次还是没有任何作用。
终于,找到了原因。
把spring cloud升级到2020.0.x以后,默认不读bootstrap配置文件。
spring官方在change note中说明了,在新版中将spring.cloud.bootstrap.enabled
默认设置为false
不启用:
https://github.com/spring-cloud/spring-cloud-release/wiki/Spring-Cloud-2020.0-Release-Notes#breaking-changes
Bootstrap, provided by spring-cloud-commons, is no longer enabled by default. If your project requires it, it can be re-enabled by properties or by a new starter.
解决方案有两个:
- 在
vm
启动参数中增加-Dspring.cloud.bootstrap.enabled=true
, - 增加spring-cloud-starter-bootstrap依赖
<dependency><groupId>com.atguigu.gulimall</groupId><artifactId>gulimall-common</artifactId><version>0.0.1-SNAPSHOT</version></dependency>
2,关于配置文件application和bootstrap的区别与练习
bootstrap.yml
和 application.yml
在Spring Cloud应用中的主要区别可以从加载顺序、使用目的、配置内容、刷新策略和注意事项等方面进行分析:
加载顺序
- bootstrap.yml:加载顺序在
application.yml
之前。它在Spring应用的上下文刷新之前被加载,主要用于配置那些影响Spring应用上下文初始化的属性。 - application.yml:加载顺序在
bootstrap.yml
之后。它在Spring应用的上下文刷新之后被加载,主要用于配置应用运行时的属性。
使用说明
- bootstrap.yml:如果使用到配置中心,其配置要放在bootstrap配置文件中。
- application.yml:用于配置应用级别的属性,如数据库连接信息、服务器端口、日志配置等。
参考文献
https://www.jb51.net/article/214410.htm