Spring Cloud Alibaba基础教程:Nacos服务发现与配置管理 (2)

在service-provider模块中添加bootstrap.yml配置文件,文件内容如下:

spring: cloud: nacos: discovery: server-addr: 127.0.0.1:8848 application: name: service-provider main: allow-bean-definition-overriding: true server: port: 8080

上面的配置指定了服务注册发现地址

启动类代码

@EnableDiscoveryClient @SpringBootApplication public class ServiceProviderApplication { public static void main(String[] args) { SpringApplication.run(ServiceProviderApplication.class, args); } }

然后启动service-provider,即可在Nacos的服务列表中观察到已经注册上去的服务

file

通过Nacos提供的Open-API可以看到已经注册的服务列表

➜ ~ curl -X GET '127.0.0.1:8848/nacos/v1/ns/service/list?pageNo=1&pageSize=10' {"count":1,"doms":["service-provider"]}% ➜ ~

到此已经完成的服务注册的基本使用,接下来介绍配置管理的使用

二、配置管理

为了方便,我直接对service-provider项目进行改造演示

修改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 "> <parent> <artifactId>spring-cloud-alibaba-demo</artifactId> <groupId>com.example</groupId> <version>0.0.1-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>service-provider</artifactId> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>

新增了spring-cloud-starter-alibaba-nacos-config依赖

修改bootstrap.yml

spring: cloud: nacos: discovery: server-addr: 127.0.0.1:8848 config: server-addr: ${spring.cloud.nacos.discovery.server-addr} application: name: service-provider main: allow-bean-definition-overriding: true server: port: 8080

上面的配置指定配置管理服务地址

修改启动类代码

@RefreshScope @RestController @EnableDiscoveryClient @SpringBootApplication public class ServiceProviderApplication { @Value("${config.test}") private String testConfigValue; @GetMapping("/config") public String getConfigValue() { return testConfigValue; } public static void main(String[] args) { SpringApplication.run(ServiceProviderApplication.class, args); } }

添加@RefreshScope是支持动态配置更新

添加Nacos配置文件

file

然后启动项目观察控制台日志输出

2019-12-01 15:44:39.097 INFO 19295 --- [ main] c.a.c.n.c.NacosPropertySourceBuilder : Loading nacos data, dataId: 'service-provider.properties', group: 'DEFAULT_GROUP', data: config.test=这是一个测试值

可以看到本地服务已经获取到Nacos配置管理中的数据了。尝试通过接口访问数据

➜ ~ curl -X GET '127.0.0.1:8080/config' 这是一个测试值% ➜ ~

正确获取到配置数据,接下来尝试修改配置数据

file

查看控制台日志

2019-12-01 15:47:25.694 INFO 19295 --- [-127.0.0.1_8848] o.s.c.e.event.RefreshEventListener : Refresh keys changed: [config.test]

说明已经修改成功,服务同步到最新的配置了。尝试通过接口访问数据

➜ ~ curl -X GET '127.0.0.1:8080/config' 这是一个测试值-修改后% ➜ ~

配置动态更新也已经生效。项目源码

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgfzzf.html