SpringBoot集成Nacos实现服务注册和远程调用
1、启动Nacos
首先,需要启动Nacos,这里不做过多介绍。
2、注册服务提供方
创建一个空白的SpringBoot项目,对应项目中加入SpringBoot-Nacos依赖,pom如下所示。
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-discovery-spring-boot-starter</artifactId>
<version>0.2.7</version>
</dependency>
application配置文件配置Nacos服务的地址,如代码清单所示。
server.port=8081 spring.application.name=demo-provider nacos.discovery.server-addr=127.0.0.1:8848
在启动类加入@EnableNacosDiscovery注解,完整启动类代码如下所示。
@SpringBootApplication
@EnableNacosDiscovery
public class DemoProviderApplication {
public static void main(String[] args) {
SpringApplication.run(DemoProviderApplication .class, args);
}
}
新建RegisterNacos使用Naming服务注册实例到注册中心。
import com.alibaba.nacos.api.annotation.NacosInjected;
import com.alibaba.nacos.api.exception.NacosException;
import com.alibaba.nacos.api.naming.NamingService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
/**
* @author D
* @Description: Nacos服务注册中心
* @date 2021/4/12
*/
@Component
public class RegisterNacos {
@NacosInjected
private NamingService namingService;
@Value("${server.port}")
private int serverPort;
@Value("${spring.application.name}")
private String applicationName;
/**
* 注册服务
*
* @throws NacosException
*/
@PostConstruct
public void registerInstance() throws NacosException {
namingService.registerInstance(applicationName, "127.0.0.1", serverPort);
}
}
启动项目后,咱们可以在Nacos服务列表中查看到当前已注册的项目。
3、注册服务消费方
创建一个空白的SpringBoot项目,这次对应项目中加入SpringCloud-Nacos和OpenFeign依赖,pom如下所示。
<!--服务注册-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2.0.0.RELEASE</version>
</dependency>
<!--服务调用-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.0.0.RELEASE</version>
</dependency>
application配置文件配置Nacos服务的地址,如代码清单所示。
server.port=8082 spring.application.name=demo-consumer spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
在启动类加入@EnableNacosDiscovery和@EnableFeignClients注解,完整启动类代码如下所示。
@SpringBootApplication
@EnableNacosDiscovery
@EnableFeignClients
public class DemoConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(DemoConsumerApplication .class, args);
}
}
新建ProviderFeignClient接口,完整代码如下所示。
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @author D
* @Description:demo-provider
* @date 2021/4/12
*/
@FeignClient("demo-provider")
public interface ProviderFeignClient {
@RequestMapping("/index")
String index();
}
新建消费者Controller进行FeignClient远程调用服务方接口,完整代码如下所示。
@RestController
public class ConsumerController {
@Autowired
ProviderFeignClient providerFeignClient;
@RequestMapping("/customer")
public String hello() {
return providerFeignClient.index();
}
}
启动项目后,当控制台输出该条日志后即当前服务已成功注册上Nacos。 此时咱们可以使用PostMan消费方所暴露的接口http://127.0.0.1:8082/customer进行远程调用服务提供方接口。
