栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

微服务feign调用的实例

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

微服务feign调用的实例

微服务调用实例:

两个服务,一个商品服务(Product) 一个库存服务(Ware)

场景:商品服务查询库存服务使用有库存。

1.库存服务(ware)做好支持查询业务
    
    @PostMapping("/hasstock")
    public R getSkusHasStock(@RequestBody List skuIds){
        //sku_id stock
        List vos = wareSkuService.getSkusHasStock(skuIds);
        return R.ok().put("data",vos);
    }
2.商品服务pom导入openfeign
        
            org.springframework.cloud
            spring-cloud-starter-openfeign
        
3.建立专属feign远程业务的包(文件夹)
位置:个人习惯 这里与controller目录平级
config
controller
dao
entity
exception
roductApplication
service
vo
增加一个  --> feign 包
4.写远程调用接口

1.建立类文件 WareFeignService

2.接口注解FeignClient客户端 调用远程服务的服务名

@FeignClient("ware")
public interface WareFeignService {
}

3.在feign类方法编写远程接口方法。 直接去被调用方法复制签名

 @PostMapping("/hasstock")
 R getSkusHasStock(@RequestBody List skuIds)

4.把这个方法,补齐被调用方法的访问路径

 @PostMapping("/ware服务路径/远程getSkusHasStock所在控制器路径/hasstock")
 R getSkusHasStock(@RequestBody List skuIds)

5.在product的需要远程调用库存的地方 引入这个远程调用接口 当作service试用

@Autowired
WareFeignService wareFeignService;
...
如:
skusHasStock = wareFeignService.getSkusHasStock(skuIdList);

至此,调用完成。

小笔记本解释一段stream()代码:

解释1:
List listSku 
 
Map map =listSku.stream().collect(Collectors.toMap(SkuHasStockTo::getSkuId, item -> item.getHasStock()));

//遍历listSku  把它的每一个对象(SkuHasStockTo)的 getSkuId 作为键 SkuHasStockTo的每一个hasStock属性作为值,做成map键值对


解释2:
 List skus
    
 List skuIdList = skus.stream().map(SkuInfoEntity::getSkuId).collect(Collectors.toList());

//遍历 skus的每一个对象(SkuInfoEntity) 取出它的skuId 生成一个新的skuId的List

解释3:
 List baseAttrs 
    
 List attrIds = baseAttrs.stream().map(attr -> { 
    return attr.getAttrId();
 }).collect(Collectors.toList());

//遍历 baseAttrs的每一个对象(ProductAttrValueEntity) AttrId 生成一个新的skuId的List

解释4:
 public static class Attrs{
   private Long  attrId;
   private String attrName;
   private String attrValue;
 }   
    
 Set idSet
 List baseAttrs   
    
 List attrList = baseAttrs.stream().filter(item -> {
    return idSet.contains(item.getAttrId());
 }).map(item -> {
    Attrs attrs1 = new SkuEsModel.Attrs();
    BeanUtils.copyProperties(item, attrs1);
    return attrs1;
 }).collect(Collectors.toList());   

//遍历 baseAttrs的每一个对象(ProductAttrValueEntity) 
//filter 过滤筛选出集合idSet 包含 ProductAttrValueEntity属性值attrId的
//把过滤后的ProductAttrValueEntity 按照 Attrs的属性 生成  List



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/458738.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号