本篇介绍Spring cloud怎么使用Nacos作为注册中心来进行服务注册及服务发现,并进行简单的测试来验证。
访问Nacos Spring Cloud 快速开始,文章里面给我们给出了Spring cloud使用nacos作为配置中心及注册中心的用法,启动配置管理我们在后面的配置中心章节再进行讲解,这里我们关注注册中心即可。

我们添加项目子工程module,命名为provider-nacos8001,然后添加我们的pom依赖
org.springframework.boot spring-boot-starter-web 2.6.11 org.springframework.boot spring-boot-starter-actuator 2.6.11 com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery 2.0.4.RELEASE org.springframework.boot spring-boot-maven-plugin
这里我们选择nacos的版本为2.0.1.RELEASE,对应的cloud的2021.0.4
添加配置文件application.yml,并进行nacos服务的注册配置
server:port: 8001spring:application:name: providercloud:nacos:discovery:server-addr: localhost:8848
添加项目启动类ProviderNacos8001Application.class
@SpringBootApplication
@EnableDiscoveryClient
public class ProviderNacos8001Application {public static void main(String[] args) {SpringApplication.run(ProviderNacos8001Application.class,args);}
}
通过 Spring Cloud 原生注解
@EnableDiscoveryClient开启服务注册发现功能
添加生产测试接口类ProviderController.class
@RestController
@RequestMapping("/nacos")
public class ProviderController {@Value("${server.port}")private String port;@GetMapping("/getPort")public String getPort(){return "访问服务的端口为:" + port;}
}
启动我们的生产者provider-nacos8001,启动完毕后我们在nacos的管理页面发现服务已经注册成功。

创建子工程consumer-nacos8002,添加项目依赖pom
org.springframework.boot spring-boot-starter-web 2.6.11 org.springframework.boot spring-boot-starter-actuator 2.6.11 com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery 2.0.4.RELEASE org.springframework.boot spring-boot-maven-plugin
添加项目配置文件application.yml,添加nacos注册配置
server:port: 8002
spring:application:name: consumercloud:nacos:discovery:server-addr: localhost:8848
添加项目启动类ConsumerNacos8002Application.class,添加我们的Ribbon负载配置RibbonConfig.class。
@SpringBootApplication
@EnableDiscoveryClient
public class ConsumerNacos8002Application {public static void main(String[] args) {SpringApplication.run(ConsumerNacos8002Application.class,args);}
}
@Configuration
public class RibbonConfig {@Bean@LoadBalancedpublic RestTemplate loadBalancedRestTemplate(){return new RestTemplate();}
}
添加消费测试接口类ConsumerController.class
@RestController
@RequestMapping("/consumer")
public class ConsumerController {@Autowiredprivate RestTemplate loadBalancedRestTemplate;@GetMapping("/getProviderPort")public String getProviderPort(){return loadBalancedRestTemplate.getForObject("http://provider/nacos/getPort",String.class);}
}
启动我们的消费者项目,然后进入nacos管理页面进行查看注册情况。

这里两个项目我们都注册好了,请求我们的消费者接口http://localhost:8002/consumer/getProviderPort
成功返回我们的提供者的端口号,至此我们使用Nacos作为Spring Cloud的注册中心就配置好了。