Java中 springcloud.openfeign应用案例解析

 更新时间:2024年06月18日 10:54:15   作者:被程序耽误的胡先生  
使用OpenFeign能让编写Web Service客户端更加简单,使用时只需定义服务接口,然后在上面添加注解,OpenFeign也支持可拔插式的编码和解码器,这篇文章主要介绍了Java中 springcloud.openfeign应用案例解析,需要的朋友可以参考下

OpenFeign是一个显示声明式的WebService客户端。使用OpenFeign能让编写Web Service客户端更加简单。使用时只需定义服务接口,然后在上面添加注解。OpenFeign也支持可拔插式的编码和解码器。spring cloud对feign进行了封装,使其支持MVC注解和HttpMessageConverts。和eureka(服务注册中心)和ribbon组合可以实现负载均衡。在Spring Cloud中使用OpenFeign,可以做到使用HTTP请求访问远程服务,就像调用本地方法一样的,开发者完全感知不到这是在调用远程方法,更感知不到在访问HTTP请求,非常的方便。

1 导入依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
    <version>3.1.7</version>
</dependency>

2  openfeign接口类编写

package com.sf.gis.taskmanage.event.feign;
import com.alibaba.fastjson.JSONObject;
import com.sf.gis.common.domain.dto.*;
import com.sf.gis.common.domain.vo.*;
import feign.Response;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@FeignClient(contextId = "eventAllocationNewServiceFegin", name = "eventAllocationNewServiceFegin", url = "${newevent.prefixurl}")  
public interface EventAllocationNewService {
    /**
     * 1. POST 获取工单号
     * @param dto
     * @param token
     * @param type
     * @return
     */
    @PostMapping(value = "/order/cOrderNumberRule/getNum", consumes = "application/json", produces = "application/json")
    EventCommonsVo workOrderNumber(@RequestBody WorkOrderNumberDto dto, @RequestHeader("Authorization") String token, @RequestHeader("content-type") String type);
/*
    EventCommonVo<WorkOrderNumberVo> workOrderNumber(@RequestBody WorkOrderNumberDto dto, @RequestHeader("token") String token, @RequestHeader("content-type") String type);
*/
    /**
     * 2创建工单接口
     * @param dto
     * @param token
     * @param type
     * @return
     */
    @PostMapping(value = "/order/cOrderNumberInfo/create", consumes = "application/json", produces = "application/json")
    EventCommonsVo createWorkOrder(@RequestBody CreateWorkOrderDto dto, @RequestHeader("Authorization") String token, @RequestHeader("content-type") String type);
    /**
     * 3 工单流转
     * @paramwanderAboutDto
     * @param token
     * @param type
     * @return
     */
    @PostMapping(value = "/order/cOrderCirculation/create", consumes = "application/json", produces = "application/json")
    EventCommonsVo wanderAbout(@RequestBody ReReportingDto reReportingDto, @RequestHeader("Authorization") String token, @RequestHeader("content-type") String type);
    /**
     * 工单处置信息更新接口
     * @param workOrderUpdateDto
     * @param token
     * @param type
     * @return
     */
    @PostMapping(value = "/order/cOrderNumberInfo/updateProcessInfo", consumes = "application/json", produces = "application/json")
    EventCommonVo workOrderUpdate(@RequestBody WorkOrderUpdateDto workOrderUpdateDto, @RequestHeader("Authorization") String token, @RequestHeader("Content-Type") String type);
    /**
     * 工单处置信息更新接口
     * @param
     * @param token
     * @param type
     * @return
     */
    @PostMapping("/order/cOrderNumberInfo/updateProcessInfo")
    EventCommonVo workOrderCompleteUpdate(@RequestBody WorkOrderCompleteUpdateDto workOrderCompleteUpdateDto, @RequestHeader("Authorization") String token, @RequestHeader("content-type") String type);
    /**
     * 上传附件
     */
    @RequestMapping(method = RequestMethod.POST,consumes = MediaType.MULTIPART_FORM_DATA_VALUE,value = "/minio/upload")
    JSONObject upload(@RequestPart("file") MultipartFile file,@PathVariable("fileName") String fileName, @PathVariable("orderNum")String orderNum, @RequestHeader("Authorization") String token);
    /**
     * 附件下载
     */
    @RequestMapping(method = RequestMethod.POST,consumes = MediaType.MULTIPART_FORM_DATA_VALUE,value = "/minio/download")
    Response download(@PathVariable("filename") String filename, @PathVariable("orderNum") String orderNum, @RequestHeader("Authorization") String token);
    /**
     * 工单状态变更接口(对接到市里)
     * @param
     * @param token
     * @param type
     * @return
     */
    @PostMapping(value = "/order/cOrderStatusChange/sendMsg", consumes = "application/json", produces = "application/json")
    EventCommonVo orderStateUpdate(@RequestBody OrderChangeDto orderChangeDto, @RequestHeader("Authorization") String token, @RequestHeader("content-type") String type);
}

3  URL 路径定义

url = "${newevent.prefixurl}")

到此这篇关于Java中 springcloud.openfeign应用案例解析的文章就介绍到这了,更多相关Java  springcloud.openfeign内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring通过@Lazy解决构造方法形式的循环依赖问题

    Spring通过@Lazy解决构造方法形式的循环依赖问题

    这篇文章主要给大家介绍了Spring如何通过@Lazy解决构造方法形式的循环依赖问题,文中有详细的代码示例,对大家的学习活工作有一定的帮助,具有一定的参考价值,需要的朋友可以参考下
    2023-10-10
  • SpringBoot中整合MyBatis-Plus-Join使用联表查询的实现

    SpringBoot中整合MyBatis-Plus-Join使用联表查询的实现

    本文主要介绍了SpringBoot中整合MyBatis-Plus-Join使用联表查询的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Java中4种经典限流算法讲解

    Java中4种经典限流算法讲解

    本文主要介绍了Java中4种经典限流算法讲解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • IDEA Eval Reset 使用方法汇总

    IDEA Eval Reset 使用方法汇总

    本文给大家介绍了IDEA Eval Reset 使用方法,安装插件包括离线安装方式和在线安装方式,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2023-10-10
  • Java INPUTSTREAM如何实现重复使用

    Java INPUTSTREAM如何实现重复使用

    这篇文章主要介绍了Java INPUTSTREAM如何实现重复使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • Maven多模块及version修改的实现方法

    Maven多模块及version修改的实现方法

    这篇文章主要介绍了Maven多模块及version修改的实现方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-06-06
  • Java中使用JDBC操作数据库简单实例

    Java中使用JDBC操作数据库简单实例

    这篇文章主要介绍了Java中使用JDBC操作数据库简单实例,本文以Mysql为例介绍使用Java JDBC操作数据库的6个步骤,需要的朋友可以参考下
    2015-06-06
  • java 进程是如何在Linux服务器上进行内存分配的

    java 进程是如何在Linux服务器上进行内存分配的

    这篇文章主要介绍了java 进程是如何在Linux服务器上进行内存分配的,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下
    2020-11-11
  • Java Api实现Elasticsearch的滚动查询功能

    Java Api实现Elasticsearch的滚动查询功能

    这篇文章主要介绍了Java Api实现Elasticsearch的滚动查询,解决ES每次只能查询一万条数据的问题,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2023-08-08
  • Java 数据结构之堆的概念与应用

    Java 数据结构之堆的概念与应用

    堆是一颗完全二叉树,在这棵树中,所有父节点都满足大于等于其子节点的堆叫大根堆,所有父节点都满足小于等于其子节点的堆叫小根堆,堆虽然是一颗树,但是通常存放在一个数组中,父节点和孩子节点的父子关系通过数组下标来确定
    2021-10-10

最新评论