前提
导入依赖
<!-- Open Feign,他里面也有ribbon,所以有负载均衡 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
加入注册中心(调用者和被调用者都需要加入注册中心)
# 我这里注册中心中的nacos
spring:
datasource:
username: root
password: root
url: jdbc:mysql://xxx.xxx.x.xx:3306/gulimall_sms?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
application:
name: gulimall-coupon
cloud:
nacos:
discovery:
server-addr: 192.168.2.88:8848
一、被调用的微服务
1、 开启服务注册与发现
@EnableDiscoveryClient//开启注册中心,注册与发现
@SpringBootApplication
public class GulimallCouponApplication {
public static void main(String[] args) {
SpringApplication.run(GulimallCouponApplication.class, args);
}
}
2、需要被调用的接口
@RestController
public class Test {
@GetMapping("/coupon/test1")
public String test(){
return "test success!";
}
}
二、调用者
1、 开启服务注册与发现和开启远程调用功能
//com.atguigu.gulimall.product.feign是我们专门写远程调用方法的包
@EnableFeignClients("com.atguigu.gulimall.product.feign")//开启远程调用
@EnableDiscoveryClient//开启注册发现
@SpringBootApplication
public class GulimallProductApplication {
public static void main(String[] args) {
SpringApplication.run(GulimallProductApplication.class, args);
}
}
2、远程调用
首先要创建一个接口
- 接口上需要添加注册@FeignClient(“xxxx”)表示我们需要调用哪一个微服务
- 创建一个方法对应我们需要调用远程接口
- 方法上写映射地址,需要和我们调用的远程接口路径对应
@FeignClient(value = "gulimall-coupon")
public interface CouponFeignService {
@GetMapping("/coupon/test1")//这里的请求地址需要和被调用的地址一样
String test();
}
三、测试
@RestController
public class Test {
@Autowired
CouponFeignService couponFeignService;
//测试优惠服务的远程调用
@GetMapping("/test/test/1")
public String test(){
return couponFeignService.test();
}
}