目录
前面讲解了nacos的安装,以及使用nacos进行服务注册与发现。
本章将要介绍使用nacos作为配置中心,并通过配置页面修改配置进行动态刷新。
1、简介
Nacos不仅可以进行服务注册与发现,还可以进行配置管理。我们可以使用nacos作为配置中心,将整个系统体系内的配置文件集中在nacos中存储。这样的好处如下:
- 分离的多环境配置,可以灵活的管理,安全性更高。
- 应用程序打包更为纯粹,以实现一次打包,多出运行的特点。
2、使用Nacos作为配置中心
2.1、项目介绍
继续使用上一篇的工程:springcloud-alibaba-project,创建新的module:service-nacos-config。
2.2、创建配置中心服务
1、首先在maven主工程:SpringCloud-Alibaba-Project下,创建一个module:service-nacos-config。pom.xml导入依赖:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>SpringCloud-Alibaba-Project</artifactId>
<groupId>com.boyue</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>service-nacos-config</artifactId>
<dependencies>
<!--springboot web相关依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--nacos配置中心依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-alibaba-nacos-config</artifactId>
<version>0.2.1.RELEASE</version>
</dependency>
<!--nacos服务中心依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-alibaba-nacos-discovery</artifactId>
<version>0.2.1.RELEASE</version>
</dependency>
</dependencies>
</project>
2、在工程的配置文件bootstrap.yml做相关的配置,配置如下:
#服务的名称,nacos中dataID中的preflix默认使用spring.application.name
#(也可以通过配置项 spring.cloud.nacos.config.prefix来配置)
spring:
application:
name: SERVICE-NACOS-CONFIG
cloud:
nacos:
config:
# nacos 配置中心地址
server-addr: localhost:8848
# 为配置内容的数据格式,目前只支持 properties 和 yaml 类型
#指定yaml格式的配置 nacos识别yaml
file-extension: yaml
discovery:
# nacos 服务中心地址
server-addr: localhost:8848
firstName: 666
- 此处配置Nacos server 的地址和应用名
- 这里配置文件必须使用bootstrap(一定是bootstrap.yml文件,不是application.yml文件)文件名,并且需要配置spring.application.name,具体原因见下面介绍 Nacos 配置管理 dataId部分。
思考,在使用nacos作为配置中心时,微服务模块的启动配置文件为什么必须是bootstrap开头?
SpringCloudConfig和 NacosConfig这种统一配置服务在springboot项目中初始化时,都是加载bootstrap配置文件去初始化上下文。在加载属性之前去config server上取配置文件,那NacosConfig或SpringCloudConfig相关配置就是需要最先加载的,而bootstrap文件的加载是先于application文件的。
3、springboot工程的启动类如下:
@SpringBootApplication
@EnableDiscoveryClient
public class ServiceNacosConfig {
// @EnableDiscoveryClient。注解,开启服务注册与发现,
// 将配置中心的服务注册到注册中心列表去
public static void main(String[] args) {
SpringApplication.run(ServiceNacosConfig.class,args);
}
}
4、编写服务提供的一个普通接口:
@RestController
@RequestMapping("/Info")
@RefreshScope
public class InfoController {
@Value("${firstName:9998}")
private String name;
@GetMapping("/baseInfo")
public RespBean getInfo(){
return RespBean.ok("nacos使用配置中心获取的信息:"+name);
}
}
- @Value注解读取配置中的信息
- @RefreshScope是Spring Cloud的原生注解,实现配置自动刷新
2.3、Nacos配置列表中新建配置
1、打开nacos,在配置中心点击“+”号,新建配置。
2、新建配置信息包括,服务端口以及其他有需要的信息:
3、配置分析:
(1)Data Id 是nacos用来定定位配置内容的,完整格式为:
${prefix}-${spring.profile.active}.${file-extension}
- prefix :默认为 spring.application.name,(也可以通过配置项 spring.cloud.nacos.config.prefix来配置)
- spring.profile.active : 即为当前环境对应的 profile,例如dev,当 spring.profile.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成:
${prefix}.${file-extension}
- file-exetension : 为配置内容的数据格式,(可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型)
因此,本例配置spring.application.name为SERVICE-NACOS-CONFIG,配置文件格式为yaml,则Data Id 为“SERVICE-NACOS-CONFIG.yaml”
(2)Group配合Data Id 一起定位配置内容,暂时不修改,使用默认即可DEFAULT_GROUP。
2.4、启动并验证
1、启动service-nacos-config模块,访问接口如图:
2、修改配置中心对应的配置文件,点击发布以及查看服务日志:
3、再次访问接口:
结论:在Nacos中修改了Key,在用到这个配置的应用中,也自动刷新了这个配置信息。
扫码关注微信公众号: