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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java ByteBuffer网络编程用法实例解析

    Java ByteBuffer网络编程用法实例解析

    这篇文章主要介绍了Java ByteBuffer网络编程用法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • idea中的lombok不生效的四种解决方法

    idea中的lombok不生效的四种解决方法

    Lombok项目是一个java库,它可以自动插入到编辑器和构建工具中,本文将详细给大家介绍idea中的lombok不生效的四种解决方法,需要的朋友可以参考下
    2023-05-05
  • SpringBoot中的事务配置管理详解

    SpringBoot中的事务配置管理详解

    这篇文章主要介绍了SpringBoot中的事务配置管理详解,Spring Boot 默认的事务规则是遇到运行异常(RuntimeException)和程序错误(Error)才会回滚,但是抛出SQLException就无法回滚了,需要的朋友可以参考下
    2024-01-01
  • 深入学习Java同步机制中的底层实现

    深入学习Java同步机制中的底层实现

    在多线程编程中我们会遇到很多需要使用线程同步机制去解决的并发问题,这些同步机制是如何实现的呢?下面和小编来一起学习吧
    2019-05-05
  • 浅谈Hibernate中的三种数据状态(临时、持久、游离)

    浅谈Hibernate中的三种数据状态(临时、持久、游离)

    下面小编就为大家带来一篇浅谈Hibernate中的三种数据状态(临时、持久、游离)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Java多线程之并发编程的基石CAS机制详解

    Java多线程之并发编程的基石CAS机制详解

    这篇文章主要介绍了java并发编程之cas详解,涉及cas使用场景和cas用作原子操作等内容,具有一定参考价值,需要的朋友可以了解下
    2021-09-09
  • java的IO流详细解读

    java的IO流详细解读

    这篇文章主要介绍了java的IO流详细解读,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • 基于spring boot排除扫描类的三种方式小结

    基于spring boot排除扫描类的三种方式小结

    这篇文章主要介绍了spring boot排除扫描类的三种方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • Java基础之this关键字的使用

    Java基础之this关键字的使用

    今天给大家带来的是关于Java基础的相关知识,文章围绕着this关键字的使用展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • 深入理解Java中的装箱和拆箱

    深入理解Java中的装箱和拆箱

    这篇文章主要介绍了深入理解Java中的装箱和拆箱,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09

最新评论