博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringCloud之Feign(Finchley版)
阅读量:4292 次
发布时间:2019-05-27

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

Java面经 2019-03-05 16:00:00

作者:cuifuan 公众号:Java知音

Feign是一个声明式的Web服务客户端。

是什么?

例如我在一个服务的interace上注解@FeignClient(value = "eureka-client") 就是声明服务名称 告诉其他服务等这个就是eureka-client 的服务客户端,它使编写Web服务客户端变得更容易

要使用Feign,请创建接口并注解, 有可插入的注解支持,包括Feign注释和JAX-RS注释。

JAX-RS注释: JAX-RS是JAVAEE6 引入的,JAX-RS即Java API for RESTful Web Services, 是Java的应用程序接口,如:

  • @Path标注资源类或方法的相对路径
  • @GET,@PUT,@POST,@DELETE 请求方式

Feign还支持可插拔编码器和解码器。

Spring Cloud Netflix 为 Feign提供了下面默认的配置Bean Decoder feignDecoder: ResponseEntityDecoder Encoder feignEncoder: SpringEncoder

Spring Cloud增加了对Spring MVC注释的支持,并使用了Spring Web中默认使用的相同HttpMessageConverters。

Spring Cloud集成了Ribbon和Eureka,在使用Feign时提供负载均衡的http客户端。

白话文:微服务架构端口很多,我们要统一端口就要用到Feign去各个服务拿接口;需要从一个服务调用另外一个服务的数据也可以直接使用Feign,也就是通过这种方式开发调用远程服务就像是调用本地服务一样方便。

准备工作

  • 环境
  1. IDEA 2018.3
  2. Gradle 4.10
  3. springCloudVersion Finchley.RELEASE
  4. 没有eureka-server的可以去github下载源码:
  5. https://github.com/cuifuan/springcloud-tools
  6. 创建的是子项目,父项目Github下载

创建eureka-client服务

gradle配置 build.gradle

SpringCloud之Feign(Finchley版)

 

创建启动类 ToolsEurekaClientApplication.java

SpringCloud之Feign(Finchley版)

 

资源文件 application.yml

eureka: client: service-url: defaultZone: http://127.0.0.1:8761/eureka/server: port: 8762spring: application: name: eureka-client

业务接口 UserService.java

package store.zabbix.toolseurekaclient.service;import store.zabbix.common.entity.User;import java.util.List;public interface UserService { Integer createUser(User user); List
getUserAll(String username,Long id); Integer updateUser(User user); Integer deleteUser(List
ids);}

业务实现层 UserServiceImpl.java

SpringCloud之Feign(Finchley版)

 

控制层 UserController.java

SpringCloud之Feign(Finchley版)

 

由上面的server.port 可知端口为8762。

可是如果我们有多个eureka-client,会造成后端接口访问端口太多。

所以在这里可以采用feign进行统一调度

新建tools-routing服务

build.gradle

dependencies { implementation "org.springframework.cloud:spring-cloud-starter-openfeign" implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client' implementation 'org.springframework.cloud:spring-cloud-starter-netflix-hystrix'}

新建的是子项目,依赖管理统一在父项目,子项目只声明自己单独使用的依赖,父项目在github可以进行拉取,地址在上面

启动类 ToolsRoutingApplication.java

SpringCloud之Feign(Finchley版)

 

核心就是开启@EnableFeignClients注解

application.yml

SpringCloud之Feign(Finchley版)

 

创建UserServiceClients调用eureka-client接口

SpringCloud之Feign(Finchley版)

 

@FeignClient是核心, @FeignClient里value的值是eureka-client的application.yml声明的,(??上面下面是上面关系,作者这里写的不是很好)如下:

spring: application: name: eureka-client

启动ToolsRoutingApplication.java

发现启动报错

SpringCloud之Feign(Finchley版)

 

说明:@GetMapping在这个版本可以使用,其传值要使用@RequestParam 在一些版本无法使用@GetMapping,需使用@RequestMapping(value = "user",method = RequestMethod.GET)

UserServiceClients接口

SpringCloud之Feign(Finchley版)

 

说明:PUT和DELETE请求,使用json传输List时或许会报错,请在注解内加上参数produces = "application/json",如@DeleteMapping(value = "user",produces = "application/json")

创建 UserController.java 控制访问层

SpringCloud之Feign(Finchley版)

 

Postman 测试结果

查询

SpringCloud之Feign(Finchley版)

 

添加

SpringCloud之Feign(Finchley版)

 

修改

SpringCloud之Feign(Finchley版)

 

删除

SpringCloud之Feign(Finchley版)

 

有postman的可以使用下面的链接:

https://www.getpostman.com/collections/8f56e7246e290e8036f0

 

SpringCloud各版本出现的问题坑等很多,遇到问题尽量自行解决,收获才会有很多

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

你可能感兴趣的文章
解决方案大全ImportError: libta_lib.so.0: cannot open shared object file: No such file or directory
查看>>
anaconda报错 ImportError: No module named conda.cli
查看>>
vnpy策略回测如何设置滑点手续费和size
查看>>
virmach主机购买和使用
查看>>
Ubuntu开启Mongodb 外网访问
查看>>
海龟交易法则11_历史测试的谎言
查看>>
海龟交易法则12_脚踏实地地测试
查看>>
海龟交易法则13_系统
查看>>
jq使用教程09_ 教程集合帖-伙伴们贡献,不断更新(4.17)
查看>>
jq使用教程01_最贴心教程,安装JQData全靠这篇指南
查看>>
jq使用教程02_安装的问题
查看>>
jq使用教程03_JQData说明书概要
查看>>
jq使用教程04_高校版教程
查看>>
jq使用教程05_ 新手也能用的安装版本,30秒点选即可安装完成,不需配置Python环境
查看>>
jq使用教程06_数据更新日志
查看>>
jq使用教程07_ JQData HTTP 接口正式上线
查看>>
jq使用教程08_基于估值波动周期的择时策略
查看>>
海龟交易法则14_掌控心魔
查看>>
海龟交易法则15_万事俱备
查看>>
海龟交易法则16_附原版海龟交易法则
查看>>