SpringCloud FeignClient 注解简单使用

为什么要使用 Feign

在使用微服务架构时难免避免各个服务之间的相互调用,各个服务又是以接口的方式暴露,需用Http远程调用,此时就需要用到Feign。
下面简单记录下在敲尚上优选项目时用 Feign 的过程。

怎么使用

假设现在又三个子模块service-activity, service-product, service-client,其中service-product提供接口,service-activity需要调用service-activity中的接口,service-client编写远程调用Feign。

导入依赖

首先需要在service-client模块的pom.xml文件中加入 openfeign 依赖
加入openfeign依赖

添加 @EnableDiscoveryClient 注解

在 service-activity, service-product 子模块的启动类上添加 @EnableFeignClients 注解。

定义被调用接口

在 service-product 子模块 ProductInnerController 中定义被调用的方法。

@RestController
@RequestMapping("/api/product")
public class ProductInnerController {
// 根据 skuId 列表得到 sku 信息列表
    @PostMapping("inner/findSkuInfoList")
    public List<SkuInfo> findSkuInfoList(@RequestBody List<Long> skuIdList){
        return skuInfoService.findSkuInfoList(skuIdList);
    }
}

定义 FeignClient

在 service-client 中定义相对应方法给 service-activity 调用。

@FeignClient(value = "service-product")
public interface ProductFeignClient {
	@PostMapping("/api/product/inner/findSkuInfoList")
	// 这里的 url 要和 ProductInnerControler 中的路径相同
    List<SkuInfo> findSkuInfoList(@RequestBody List<Long> skuIdList);
}

定义调用接口

在 service-activity 中调用 service-product 中的方法。

@Service
public class ActivityInfoServiceImpl extends ServiceImpl<ActivityInfoMapper, ActivityInfo> implements ActivityInfoService {

	@Autowired
    private ProductFeignClient productFeignClient;
    
	@Override
	public Map<String, Object> findActivityRuleList(Long activityId) {
		List<SkuInfo> skuInfoList = productFeignClient.findSkuInfoList(skuIdList);		
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值