咱们已经学会了,如何利用Nacos实现服务的注册与发现。同时,也介绍了在Spring Cloud中,咱们可使用的几种不一样编码风格的服务消费方式。接下来,咱们再来学习一下Nacos的另一个重要能力:配置管理。web
Nacos除了实现了服务的注册发现以外,还将配置中心功能整合在了一块儿。经过Nacos的配置管理功能,咱们能够将整个架构体系内的全部配置都集中在Nacos中存储。这样作的好处,在以往的教程中介绍Spring Cloud Config时也有提到,主要有如下几点:spring
Nacos的配置管理模型与淘宝开源的配置中心Diamond相似,基础层面都经过DataId
和Group
来定位配置内容,除此以外还增长了不少其余的管理功能。bootstrap
下面咱们经过一个简单的例子来介绍如何在Nacos中建立配置内容以及如何在Spring Cloud应用中加载Nacos的配置信息。安全
第一步:进入Nacos的控制页面,在配置列表功能页面中,点击右上角的“+”按钮,进入“新建配置”页面,以下图填写内容:架构
其中:app
Data ID
:填入alibaba-nacos-config-client.properties
Group
:不修改,使用默认值DEFAULT_GROUP
配置格式
:选择Properties
配置内容
:应用要加载的配置内容,这里仅做为示例,作简单配置,好比:didispace.title=spring-cloud-alibaba-learning
第一步:建立一个Spring Boot应用,能够命名为:alibaba-nacos-config-client
。curl
第二步:编辑pom.xml
,加入必要的依赖配置,好比:spring-boot
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.5.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Finchley.SR1</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>0.2.2.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.2</version> <optional>true</optional> </dependency> </dependencies> |
上述内容主要三部分:工具
parent
:定义spring boot的版本dependencyManagement
:spring cloud的版本以及spring cloud alibaba的版本,因为spring cloud alibaba还未归入spring cloud的主版本管理中,因此须要本身加入dependencies
:当前应用要使用的依赖内容。这里主要新加入了Nacos的配置客户端模块:spring-cloud-starter-alibaba-nacos-config
。因为在dependencyManagement
中已经引入了版本,因此这里就不用指定具体版本了。能够看到,这个例子中并无加入nacos的服务发现模块,因此这两个内容是彻底能够独立使用的post
第三步:建立应用主类,并实现一个HTTP接口:
@SpringBootApplication public class TestApplication { public static void main(String[] args) { SpringApplication.run(TestApplication.class, args); } @Slf4j @RestController @RefreshScope static class TestController { @Value("${didispace.title:}") private String title; @GetMapping("/test") public String hello() { return title; } } } |
内容很是简单,@SpringBootApplication
定义是个Spring Boot应用;还定义了一个Controller,其中经过@Value
注解,注入了key为didispace.title
的配置(默认为空字符串),这个配置会经过/test
接口返回,后续咱们会经过这个接口来验证Nacos中配置的加载。另外,这里还有一个比较重要的注解@RefreshScope
,主要用来让这个类下的配置内容支持动态刷新,也就是当咱们的应用启动以后,修改了Nacos中的配置内容以后,这里也会立刻生效。
第四步:建立配置文件bootstrap.properties
,并配置服务名称和Nacos地址
spring.application.name=alibaba-nacos-config-client server.port=8001 spring.cloud.nacos.config.server-addr=127.0.0.1:8848 |
注意:这里必须使用
bootstrap.properties
。同时,spring.application.name
值必须与上一阶段Nacos中建立的配置Data Id匹配(除了.properties或者.yaml后缀)。
第五步:启动上面建立的应用。
在启动的时候,咱们能够看到相似上面的日志信息,这里会输出应用程序要从Nacos中获取配置的dataId和group。若是在启动以后,发现配置信息没有获取到的时候,能够先从这里着手,看看配置加载的目标是否正确。
第六步:验证配置获取和验证动态刷新
用curl或者postman等工具,访问接口: localhost:8001/test
,一切正常的话,将返回Nacos中配置的spring-cloud-alibaba-learning
。而后,再经过Nacos页面,修改这个内容,点击发布以后,再访问接口,能够看到返回结果变了。