最近搞nacos做为springboot的配置中心时,运行项目就一直报错,报错原因是没有加载到配置文件,可是nacos服务的地方又确确实实配置了配置文件
,最后在启动的控制台中找到了一些线索,结合百度和源码查看找到了原因所在。
另外提一嘴,如果你导入了spring-cloud-starter-alibaba-nacos-config
依赖(如果是父模块导入,子模块也受作用),就必须配置bootstrap.yml这样的配置文件,不配置的话,运行代码会有报错,但不影响代码正常使用,只是会有控制台输出错误 ps:因为我看到错误就难受,哪怕是警告
线索:(ps:因为不知道怎么截横向的长图只能这样了)
项目启动时的控制台输出
写着需要 spring.application.name
.properties配置文件
后面找到了PropertySourceBootstrapConfiguration
类
应该是默认读取配置中心以properties为文件名后缀的配置文件,但是也可以更改,在bootstrap.yml配置文件中
如果在bootstrap.yml中添加了一行: spring.profiles.active=dev
spring:
cloud:
nacos:
config:
server-addr: localhost:8848
file-extension: yaml
application:
name: service-daily
profiles:
active: dev
那么在nacos配置中心的配置文件需要更改名字为:service-daily-dev.yaml
又找到一段源码,所以在file-extension
处配置yaml/yml都可,
但是如果file-extension
处配置yml,那么nacos配置文件中心的文件也得是服务名.yml
,yaml也如此
最后给出使用nacos时,需要一些依赖,如图:
依赖的版本交由父模块进行版本控制了,(另附上依赖代码):
<!--spring-cloud nacos 服务注册-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--服务调用-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!--代替 spring-cloud-config 的nacos-config -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
父模块的依赖管理:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
在resource目录下建一个bootstrap.yml配置文件,配置nacos的config信息,然后在nacos服务处新建一个配置文件,bootstrap.yml内容在上面已经给出了
如有错误请指出,找的源码可能理解不太对。