1、版本不匹配
创建一个普通的springboot项目,我使用的是官方初始化创建的,所以版本为最新版本,由于我使用的nacos是1.1.4,所以这个时候版本不匹配整合也会出现问题,需要降低springboot或者升级nacos版本即可
这里我选择降低了版本,主要是下载nacos比较慢
贴上使用nacos需要的依赖
<!--服务的注册与发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-nacos-discovery</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
<!--服务配置中心-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>0.2.2.RELEASE</version>
</dependency>
2、nacos配置信息
Data ID它的定义规则是:${prefix}-${spring.profiles.active}.${file-extension}
个人理解为服务名称+当前启用环境+文件格式。当然你也可以随便瞎写,就是出不来呗
我的使用示例 mayikt-member-dev.yml
3、bootstrap.yml
所以这里我的application.yml配置文件中的服务名称和启动配置环境应该是这样的,这样应该就能加载读取到nacos配置信息
spring:
application:
name: mayikt-member
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
config:
server-addr: 127.0.0.1:8848
profiles:
active: dev
这个时候重启项目你会发现还是报错,需要吧对应的application.yml换成bootstrap.yml,由于nacos需要读取配置信息,再把这些信息注入到bean中,所以需要最优先读取配置,这个时候就需要把配置文件写在bootstrap.yml中
4、file-extension: yml
按照道理讲,这个时候应该可以启动成功了,但是有的人就还是启动报错
因为nacos默认读取.properties文件,我们配置的时候选择的是yml格式,所以需要修改一下
spring:
application:
name: mayikt-member
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
config:
server-addr: 127.0.0.1:8848
file-extension: yml
profiles:
active: dev
以上几步处理完毕之后,启动项目,没毛病吧
如果想动态改变nacos上的配置信息,代码中能及时生效,在对应类上加上@RefreshScope
注解