Nacos同SpringCloud Config一样,在项目初始化时,要保证先从配置中心(直接以Nacos作为配置中心)进行配置拉取,拉取配置后,才能保证项目的正常启动,而我们知道SpringBoot配置文件的加载顺序是存在优先级的,bootstrap的优先级要高于application,所以我们创建两个配置文件 bootstrap.yml (从配置中心拉取配置)和 application.yml(写自己的配置),我们配置 bootstrap.yml 以使3377服务从Nacos上拉取配置信息:
# nacos配置 server: port: 3377 spring: application: name: nacos-config-client cloud: nacos: discovery: #Nacos服务注册中心地址 server-addr: localhost:8848 config: #Nacos作为配置中心地址 server-addr: localhost:8848 # 指定yaml格式的配置,也就是说从Nacos上读yaml格式的配置文件 file-extension: yaml # 配置匹配规则 # ${spring.application.name}-${spring.profile.active}.${file-extension}然后用 application.yml 定制自己的配置信息,将环境定义为开发环境:
spring: profiles: active: dev # 表示开发环境编写其主启动类后,然后编写其业务类,在业务来上添加SpringCloud的原生注解@RefreshScope 以使服务可以支持从Nacos配置中心动态刷新配置信息:
@RestController @RefreshScope //支持Nacos的动态刷新功能 public class ConfigClientController { @Value("${config.info}") private String configInfo; @GetMapping("/config/info") public String getConfigInfo() { return configInfo; } }在上面的业务层中我们从配置中心读取了配置信息
而我们在Nacos配置中心中添加配置信息,在Nacos配置中心中添加配置文件要遵循一定的匹配规则。 ↓
Nacos中的 dataId 的组成格式及与SpringBoot配置文件中的匹配规则,更详细的信息可以参考Nacos官方文档。
在Nacos SpringCloud中,dataId 的完整格式为:
${prefix}-${spring.profile.active}.${file-extension}prefix 默认为 spring.application.name (服务名)的值,也可以通过配置项 spring.cloud.nacos.config.prefix 来配置。
spring.profile.active 即为当前环境对应的 profile(上面我们在 application.yml中配置的属性),详情可以参考 。 注意:当 spring.profile.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}, 建议 不要使 spring.profile.active 为空。
file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。
由于prefix 默认为 spring.application.name (服务名)的值,所以 dataId 的完整格式可以替换为:
${spring.application.name}-${spring.profile.active}.${file-extension}结合我们在 boostrap.yml 配置文件和 application.yml 配置文件的配置,我们可以得到在当前实例中的 dataId 应该为:
nacos-config-client-dev.yaml根据上述公式得到 dataId 应为的值后,我们就可以在Nacos配置中心的配置列表中新建配置文件。在新建配置文件时,Data ID 中填入我们得到的 dataId ,组名先选择默认的即可,配置格式选择我们在 file-extension 中设置的YAML格式,然后编写配置文件,编写后点击 发布即可:
注意,在Nacos中的 dataId 中的后缀名必须用 yaml 而不能用 yml。
添加配置文件后再点开Nacos配置中心的配置列表,就能发现已经存在刚才创建的配置文件:
然后我们启动3377微服务,访问 :3377/config/info 查看能否访问都Nacos配置中心的配置信息:
Nacos配置中心直接就 支持动态刷新,再更改了Nacos配置中心的配置信息后,再通过3377微服务访问,就可以得到更新后的配置信息。目前Nacos已经实现了Eureka + Config + Bus的功能,但是Nacos之所以如此优秀是因为这些框架有的功能它都有,而这些框架没有的功能它还有!下面看Nacos的一些高级功能。
3.2 分类配置问题:多环境多项目管理