步骤:
1、两个服务均在配置文件开启openfeign,并设置项目名,application-name
2、两个服务都在启动类上加上@EnableFeiginClients注解(默认是全部接口都可以被远程调用,除非你设置某一个包地址)
3、使用的时候,使用其他服务的接口
service-ucenter 为服务名,/api/ucenter/member/inner/get-member-dto/{memberId} 为接口地址。
这个服务的controller直接调用UcenterMemberService 的getMemberDtoByMemberId方法即可调用service-ucenter服务的/api/ucenter/member/inner/get-member-dto/{memberId}接口
@FeignClient(value = "service-ucenter", fallback = UcenterMemberServiceFallBack.class)
public interface UcenterMemberService {
@GetMapping(value = "/api/ucenter/member/inner/get-member-dto/{memberId}")
MemberDto getMemberDtoByMemberId(@PathVariable(value = "memberId") String memberId);
}
使用声明式的远程服务org.springframework.cloud.openfeign
进行服务之间的远程调用
一、服务A:
创建一个普通的api
二、服务B:
1、创建一个feign包,专门用来存放远程调用接口
创建一个接口,内容如下,其中RequestMapping中的内容必须是远程调用的端口号后面的全部内容。
package com.tangxz.gulimall.member.feign;
import com.tangxz.common.utils.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @Info: 声明式的远程服务 调用gulimall-coupond的接口
* @Author: 唐小尊
* @Date: 2020/7/11 8:53
*/
@FeignClient("gulimall-coupon")
public interface CouponFeignService {
@RequestMapping("/coupon/coupon/member/list")
public R membercoupons();
}
2、在启动类添加注解
注解参数值为远程调用接口存放的包路径
@EnableFeignClients(basePackages = "com.tangxz.gulimall.member.feign")
三、服务B使用
直接像service或mapper一样,注入直接使用