1.下载安装并启动nacos
之前的文章有详细的下载地址和安装教程
nacos下载传送门:https://blog.csdn.net/qq_41514643/article/details/107513530
nacos安装传送门:https://blog.csdn.net/qq_41514643/article/details/107516554
2.注册在nacos的服务分为提供者(provider)和消费者(consumer)
2.1提供者(provider)
2.1.1添加依赖
springcloudalibaba使用时要注意各个依赖的版本对应,以下是版本对应表
(详见:https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E)
毕业版本依赖关系
因为是在原项目基础上添加注册中心的,所以这里以项目springboot2.0.4版本为例(如果觉得版本太低可以根据对照表更新版本)
pom依赖
Finchley.RELEASE
2.0.2.RELEASE
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
com.alibaba.cloud
spring-cloud-alibaba-dependencies
${spring-cloud-alibaba.version}
pom
import
org.springframework.boot
spring-boot-starter-web
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
2.0.2.RELEASE
javax.ws.rs
jsr311-api
2.1.2yml配置
server:
port: 20001
spring:
cloud:
nacos:
discovery:
# 服务注册中心
server-addr: 192.168.32.129:8848
application:
#服务名
name: base-provider
2.1.3开启注解(如果springcloud版本在E之后即可省略此步骤)
在application启动类添加@EnableDiscoveryClient
启动项目后即可在nacos看到本服务
2.2消费者(consumer)
消费者和提供者的注册方式相同,只不过在此基础上添加了openfeign的服务调用功能
2.2.1依赖
1.8
Finchley.RELEASE
2.0.4.RELEASE
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
com.alibaba.cloud
spring-cloud-alibaba-dependencies
${spring-cloud-alibaba.version}
pom
import
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
2.0.2.RELEASE
org.springframework.boot
spring-boot-starter-web
org.springframework.cloud
spring-cloud-starter-openfeign
2.2.2yml配置
spring:
application:
# 服务名
name: service-comsumer
cloud:
nacos:
discovery:
# 服务注册中心
server-addr: 192.168.32.129:8848
server:
# 服务端口
port: 8070
management:
# 端点检查(健康检查)
endpoints:
web:
exposure:
include: "*"
2.2.3开启注解(如果springcloud版本在E之后即可省略此步骤)
在application启动类添加@EnableDiscoveryClient
2.2.4openfeign的使用
使用openfeign仍采用常规的controller-service开发习惯,逻辑代码在service中实现(@Component:类交给spring管理;@FeignClient:标识扫描的远程调用接口,name为服务名;@GetMapping后为调用目标方法的路径名)
service
package com.example.demo.service;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
/**
* @ClassName TestService
* @Description
* @Author Administrator
* @Date 2020/8/21 0021 9:46
* @Version 1.0
*/
@Component
@FeignClient(name="base-provider")
public interface TestService {
/**
* 查询
* @return
*/
@GetMapping("/api/tradeinfo/weather")
String getServiceInfo();
/**
* 查询
* @param id
* @return
*/
@GetMapping("/api/tradeinfo/{id}")
String selectById(@PathVariable("id") String id);
}
controller
package com.example.demo.controller;
import com.example.demo.service.TestService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/demo")
public class TestController {
@Autowired
TestService testService;
@GetMapping("/test")
public String Test(@RequestParam String id) {
String s = testService.selectById(id);
return s;
}
@GetMapping("/test1")
public String Test1() {
return testService.getServiceInfo();
}
}
以下是调用consumer接口返回的数据