spring-cloud-demo-03-nacos
本Demo演示了Nacos服务端的搭建,以及如何使用其服务发现和配置中心的功能。
源码:https://github.com/seepine/spring-cloud-demo
模块介绍
spring-cloud-demo-03-nacos模块分为两个子模块,分别为Provider(供应者)和Consumer(消费者)。
一、搭建Nacos服务端
本教程是用Docker搭建Nacos,也可到官网使用任意方法搭建。
1.安装Docker
点此下载对应系统的docker-ce
2.运行Nacos服务端
1
| docker run --name nacos -e MODE=standalone -p 8848:8848 -d nacos/nacos-server:latest
|
3.验证
输入http://127.0.0.1:8848/nacos/即可看到Nacos控制台
二.创建供应者
1.添加依赖
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> </dependencies>
|
2.添加配置文件
1 2 3 4 5 6 7 8 9 10 11 12
| spring: application: name: nacos-provider cloud: nacos: discovery: server-addr: 127.0.0.1:8848 config: server-addr: ${spring.cloud.nacos.discovery.server-addr} file-extension: yml server: port: 12000
|
3.在Nacos中创建对应配置文件
其中[Data ID]需要与spring.application.name对应
4.创建获取配置文件的实体类
1 2 3 4 5 6 7
| @Data @Component @ConfigurationProperties(prefix = "user") public class UserConfig { private String username; private String password; }
|
5.编写测试接口
1 2 3 4 5 6 7 8 9 10
| @RestController @AllArgsConstructor public class ApiController { private UserConfig userConfig;
@GetMapping("/user/config") public Object getUserConfig() { return userConfig; } }
|
6.测试服务发现与获取配置文件功能
7.测试配置文件动态刷新
使用@RefreshScope或@ConfigurationProperties即可使用动态刷新功能
7.1 进入Nacos修改配置文件参数
7.2 此时再次刷新接口
三、创建消费者
1.添加依赖
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> </dependencies>
|
2.添加配置文件
1 2 3 4 5 6 7 8 9 10 11 12
| spring: application: name: nacos-consumer cloud: nacos: discovery: server-addr: 127.0.0.1:8848 config: server-addr: ${spring.cloud.nacos.discovery.server-addr} file-extension: yml server: port: 13000
|
3.添加Feign
1 2 3 4 5 6 7
| @EnableFeignClients @SpringBootApplication public class SpringCloudDemo03NacosConsumerApplication { public static void main(String[] args) { SpringApplication.run(SpringCloudDemo03NacosConsumerApplication.class, args); } }
|
1 2 3 4 5
| @FeignClient("nacos-provider") public interface RemoteApiService { @GetMapping("/user/config") Object userConfig(); }
|
4.添加消费者接口
1 2 3 4 5 6 7 8 9
| @RestController @AllArgsConstructor public class ApiController { RemoteApiService remoteApiService; @GetMapping("/get") public Object get() { return remoteApiService.userConfig(); } }
|
5.测试服务发现功能及通过feign获取供应者的配置文件内容