博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringCloud Feign的使用方式(二)
阅读量:4293 次
发布时间:2019-05-27

本文共 3772 字,大约阅读时间需要 12 分钟。

现在介绍如何通过实现Feign接口的形式,更简单的使用Feign

使用的版本:spring-cloud-openfeign 2.1.0.RELEASE

SpringCloud版本:Greenwich.RELEASE

1、新建一个Maven模块,该模块只存放定义的Feign接口(因为消费者和提供者都需要使用该接口,所以将它们抽取出来单独部署成一个模块),添加依赖feign依赖

    
       
       
           
org.springframework.cloud
           
spring-cloud-starter-openfeign
           
       
   
   
       
           
           
               
org.springframework.cloud
               
spring-cloud-dependencies
               
Greenwich.RELEASE
               
pom
               
import
           
       
   

2、该模块下编写相应的服务接口

package feign.webservice;import com.fei.common.constant.ServerContant;import com.fei.common.model.employee.EmployeeModel;import org.springframework.cloud.openfeign.FeignClient;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import java.util.List;/** * @Author: xiaoshijiu * @Date: 2019/7/4 * @Description: 员工feign接口 * @FeignClient: name表示为哪个服务配置feign申明式服务调用 */@FeignClient(name = ServerContant.SERVER_PROVIDER)@RequestMapping("/feign/empl")public interface EmployeeWebService {    /**     * 查询所有员工     * @return 员工模型列表     */    @RequestMapping(value = "/list", method = RequestMethod.GET)    List
list();}

在接口上添加注解@FeignClient(name = ServerContant.SERVER_PROVIDER),表明这是一个Feign客户端,name属性表示具体为哪个服务配置
然后接口的具体方法可以填写@RequestMapping,请求路径映射

 

3、服务提供者,与第一种方法不同的就是在这里

第一种方法:服务提供者Controller中方法的@RequestMapping路径映射要和Feign接口中方法的路径映射一样
现在:服务提供者实现Feign接口

package com.fei.springcloudprovide8001.webservice.feign;import com.alibaba.fastjson.JSON;import com.fei.common.model.employee.EmployeeModel;import com.fei.springcloudprovide8001.employee.EmployeeService;import feign.webservice.EmployeeWebService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.RestController;import java.util.List;/** * @Author: xiaoshijiu * @Date: 2019/7/4 * @Description: 员工feign接口实现类 */@RestControllerpublic class EmployeeWebServiceImpl implements EmployeeWebService {    @Autowired    private EmployeeService employeeService;    @Override    public List
list() {        // 使用阿里巴巴的fastjson进行集合中对象的模型转换        return JSON.parseArray(JSON.toJSONString(employeeService.list()), EmployeeModel.class);    }}

4、服务消费者,与第一种方法一致,就像调用本地方法一样去调用定义的feign接口就可以了

package com.fei.springcloudconsumer.consumer.employee.feign;import com.fei.common.model.employee.EmployeeModel;import feign.webservice.EmployeeWebService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import java.util.ArrayList;import java.util.List;/** * @Author: xiaoshijiu * @Date: 2019/7/4 * @Description: feign组件,消费服务接口 */@RestController@RequestMapping("/consume/feign/empl")public class EmployeeFeignController {    /**     * 使用了Feign,就像调用本地方法一样,调用远程HTTP请求     */    @Autowired    private EmployeeWebService employeeWebService;    /**     * 获取员工列表,使用feign组件     */    @GetMapping("/list")    public List
list2() {        List
employeeModels = employeeWebService.list();                    return webEmployeeModels;    }}

有一点需要注意的是:这里的RequestMapping路径不能和Feign接口定义RequestMapping路径重复

 

5、最后要在服务消费者的主启动类上加上@EnableFeignClients(basePackages = "feign.webservice")注解

需要注意的是,如果你定义的Feign接口不在主启动类包或其子包下(即不在@ComponentScan扫描范围内),则需添加basePackages属性去指明Feign接口的包位置。
这一点很重要,不然会报 不能@Autowired EmployeeWebService 的错。

 

6、测试,成功调用,并自带了Ribbon负载均衡的作用

 

转载地址:http://icyws.baihongyu.com/

你可能感兴趣的文章
linux的挂载的问题,重启后就挂载就没有了
查看>>
docker原始镜像启动容器并创建Apache服务器实现反向代理
查看>>
docker容器秒死的解决办法
查看>>
管理网&业务网的一些笔记
查看>>
openstack报错解决一
查看>>
openstack报错解决二
查看>>
linux source命令
查看>>
openstack报错解决三
查看>>
乙未年年终总结
查看>>
子网掩码
查看>>
第一天上班没精神
查看>>
启动eclipse报错:Failed to load the JNI shared library
查看>>
eclipse安装插件的两种方式在线和离线
查看>>
linux下源的相关笔记(suse)
查看>>
linux系统分区文件系统划分札记
查看>>
Linux(SUSE 12)安装Tomcat
查看>>
Linux(SUSE 12)安装jboss4并实现远程访问
查看>>
Neutron在给虚拟机分配网络时,底层是如何实现的?
查看>>
netfilter/iptables全攻略
查看>>
Overlay之VXLAN架构
查看>>