这次搭建一个简单的springboot的项目配置文件不打算放在nacos上了,直接使用application.yaml,第一次启动时结果项目直接报错停止
2020-02-04 09:33:47.954 ERROR 3540 --- [ main] o.s.c.a.nacos.NacosConfigProperties :
create config service error!properties=NacosConfigProperties{serverAddr='null', encode='null', group='DEFAULT_GROUP', sharedDataids='null', refreshableDataids='null', prefix='null', fileExtension='properties', timeout=3000, endpoint='null', namespace='null', accessKey='null', secretKey='null', contextPath='null', clusterName='null', name='null', activeProfiles=[]},e=,
com.alibaba.nacos.api.exception.NacosException: null
at com.alibaba.nacos.api.config.ConfigFactory.createConfigService(ConfigFactory.java:45) ~[nacos-api-0.6.2.jar:na]
at com.alibaba.nacos.api.NacosFactory.createConfigService(NacosFactory.java:41) ~[nacos-api-0.6.2.jar:na]
at org.springframework.cloud.alibaba.nacos.NacosConfigProperties.configServiceInstance(NacosConfigProperties.java:347) ~[spring-cloud-alibaba-nacos-config-0.2.1.RELEASE.jar:0.2.1.RELEASE]
at org.springframework.cloud.alibaba.nacos.client.NacosPropertySourceLocator.locate(NacosPropertySourceLocator.java:63) [spring-cloud-alibaba-nacos-config-0.2.1.RELEASE.jar:0.2.1.RELEASE]
at org.springframework.cloud.bootstrap.config.PropertySourceBootstrapConfiguration.initialize(PropertySourceBootstrapConfiguration.java:94) [spring-cloud-context-2.0.2.RELEASE.jar:2.0.2.RELEASE]
at org.springframework.boot.SpringApplication.applyInitializers(SpringApplication.java:628) [spring-boot-2.0.6.RELEASE.jar:2.0.6.RELEASE]
at org.springframework.boot.SpringApplication.prepareContext(SpringApplication.java:364) [spring-boot-2.0.6.RELEASE.jar:2.0.6.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:305) [spring-boot-2.0.6.RELEASE.jar:2.0.6.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1242) [spring-boot-2.0.6.RELEASE.jar:2.0.6.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1230) [spring-boot-2.0.6.RELEASE.jar:2.0.6.RELEASE]
at com.zp.zplive.service.redis.ZpLiveServiceCacheApplication.main(ZpLiveServiceCacheApplication.java:17) [classes/:na]
他的错误很明显说我的properties文件为空导致服务创建失败,但是我使用的是yaml文件却没有使用properties的配置文件。
后来经过思考想起我的pom文件是copy前面使用nacos云配置项目的的,赶紧去pom文件内查看,果然有Nacos Config配置的依赖。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
而使用Nacos Config做统一配置管理时,启动springboot项目初始化都是使用bootstrap.properties配置文件去初始化上下文。(神奇的是我后来复现这个错误时最后能正常跑起来,也验证了这个观点)
使用SpringCloudConfig这种统一配置时Spring Boot 配置文件的加载顺序,依次为 bootstrap.properties
-> bootstrap.yml
->application.properties
-> application.yml
,其中 bootstrap.properties
配置为最高优先级。
所以最后的解决方法是把上面标出的Nacos Config配置的依赖去掉,就能正常跑起来了。