前言
Spring Cloud-OpenFeign这个组件类似于HTTP组件,只不过是服务之间的调用,你启动了一个服务,想调用另一个服务,要是浏览器来的话,他需要输入URL,我们要是想让服务之间调用的话,可以使用Spring Cloud-OpenFeign,这样就可以省去很多功夫,而且以后分布式框架搭建起来用这个也很方便。此节比较简单
1、引入Spring Cloud-OpenFeign组件
引入这个部分,其实我们在创建服务的时候,我们已经引入了这个服务,只要服务的pom文件中有如下代码就代表引入好了
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2、配置OpenFeign
首先保证你的向nacos注册了这个服务。OpenFeign和HTTP类似,OpenFeign也有两个角色,请求服务,和相应服务,我们就按视频教程那样搞两个服务,访问会员服务来获取优惠券信息。下面是注册了服务的代码
然后在Controller层注册一个接口,用于返回优惠券的,我们就在CouponController里面写吧
@RequestMapping("member/list")
public R memebercoupons(){
CouponEntity couponEntity = new CouponEntity();
couponEntity.setCouponName("满100减10");
return R.ok().put("coupon", Arrays.asList(couponEntity) );
}
写完保存,然后写请求的那一方去,在gulimall-member里面写,首先先创建一个包,叫做feign
然后创建一个JAVA 接口文件,创建完成之后,直接复制此段代码进去
package com.example.gulimall.member.feign;
import com.example.common.utils.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
@FeignClient("gulimall-coupon")
public interface CouponFeignService {
@RequestMapping("/coupon/coupon/member/list")
public R memebercoupons();
}
其中FeignClient(“gulimall-coupon”)代表的就是nacos里面的服务名字,这个名字可以去coupon服务中的application.yml去查看
创建好了这个接口文件之后,我们打开member的入口函数,加一行这个代码
@EnableFeignClients(basePackages = "com.example.gulimall.member.feign")
他代表了引入了Feign这个组件,后面的是完整包名,代表了他会去扫描整个包
写完这个,我们再去写一下Contrller层,简单写个方法,用于获取会员,以及返回coupon服务的方法,上面我们已经创建了一个接口用与访问coupon,接下来我们需要在Contrller调用这个接口即可
至此,我们已经简单的搭建好了两个服务,以及openFeign,接下来我们先开启nacos
两个服务还没有启动,我们现在去启动一下
启动好了,我们现在访问一下Member的方法,看看他是否能够获取到coupon的信息(如果返回的信息有满100减10代表就是远程访问了coupon)
这个就代表了,成功了,至此本节完事