记坑,使用SPRING CLOUD微服务时用@FeignClient传LIST集合

controller层:

  • 用fastjson中的JSON.toJSONString()将list转换为json类型数据
    @GetMapping("/insert")
    public AjaxResult insertMatnr(SelectParamVO selectParamVO){
        List<MdMatnr> list = SAPConnUtils.GetMdMatnrList(DoConnect.doConnectTest(),selectParamVO.getDat1(),selectParamVO.getDat2(),selectParamVO.getMdat1(),selectParamVO.getMdat2(),selectParamVO.getFunctionName(),selectParamVO.getMatnrid());
        String jsonString = JSON.toJSONString(list);
        return mdMatnrFeignClientService.insertMdMatnrs(jsonString);
    }
  • 接口层,用@FrignCLient注解调用服务,使用@RequestBody注解将jsonString作为参数传过去(数据量较大时@RequestParam会报错)
@FeignClient(value = "pimp-md")
public interface MdMatnrFeignClientService {

    @PostMapping("/mdMatnr/inertMdMatnrList")
    public AjaxResult insertMdMatnrs(@RequestBody String jsonString);

}
  • 被调用服务controller层,使用@RequestBody注解接收String类型的Json格式参数,在使用JSONArray.parseArray()方法将其转换成list
    @PostMapping("/inertMdMatnrList")
    public AjaxResult insertMdMatnrList(@RequestBody String jsonList ){
        List<MdMatnr> list = JSONArray.parseArray(jsonList, MdMatnr.class);
        return toAjax(mdMatnrService.insertMdMatnrList(list));
    }

使用GetMapping传对象类型的参数的时候,可以在@FrignCLient所在类的方法参数部分使用注解@SpringQueryMap进行参数传递,亲测可用。

@FeignClient(value = "service-name")
public interface AMFeignService {

    @GetMapping("/RestController_path/method_path")
    public Map getMdZyListMethod(@SpringQueryMap Map map);
}

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
Spring Cloud是一个用于构建分布式系统的开发工具集合,它提供了许多有用的组件,包括Zuul、Ribbon、Hystrix和@FeignClient。 Zuul是Spring Cloud中的网关服务,它可以将各个微服务的请求路由到相应的微服务上。Zuul具有负载均衡和过滤器等功能,可以对请求进行拦截和处理。 Ribbon是一个负载均衡器,它可以根据负载情况将请求分发给不同的微服务实例。Ribbon可以与Eureka等注册中心配合使用,动态地获取可用的服务实例列表,并根据一定的负载均衡策略选择合适的实例。 Hystrix是一个容错和延迟容忍的库,可以帮助我们构建稳定的分布式系统。它可以防止由于某一微服务的故障或延迟而导致整个系统的崩溃。通过为每个外部服务的调用添加断路器,Hystrix可以在外部服务不可用时提供备选方案,并且可以对外部服务的调用进行监控和度量。 @FeignClient是一个用于声明式REST客户端的注解。通过在接口中添加@FeignClient注解,并指定要访问的微服务名称,我们可以方便地进行REST调用。Feign会根据接口定义自动生成实现类,并将请求发送到相应的微服务。 综上所述,Spring Cloud中的Zuul、Ribbon、Hystrix和@FeignClient是用于构建分布式系统的重要组件。它们可以帮助我们解决微服务架构中的路由、负载均衡、容错和服务间调用等问题。利用这些组件,我们可以更方便地构建可靠、高效的分布式系统。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静梵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值