博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
声明式调用---Feign
阅读量:6263 次
发布时间:2019-06-22

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

Feign:Feign是一种声明式、模板化的HTTP客户端。

用我的理解来说,Feign的功能类似dubbo暴露服务,但是与dubbo稍有不同的是Feign是HTTP REST接口的形式暴露的。

这一篇还是要利用到上一篇中的service(8762),service(8763)两个服务,先启动这两个服务。

新建项目,service-feign(8765),pom加入feign依赖,完整pom代码如下:

4.0.0
com.dalaoyang
springcloud_feign
0.0.1-SNAPSHOT
jar
springcloud_feign
springcloud_feign
org.springframework.boot
spring-boot-starter-parent
1.5.9.RELEASE
UTF-8
UTF-8
1.8
Edgware.SR1
org.springframework.cloud
spring-cloud-starter-eureka
org.springframework.boot
spring-boot-starter-test
test
org.springframework.cloud
spring-cloud-starter-feign
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
org.springframework.boot
spring-boot-maven-plugin
复制代码

在启动类加入@EnableFeignClients注解,如果没有加入basePackages制定扫描包得话,默认会去找项目会扫描到的所有@FeignClient。启动类代码如下:

package com.dalaoyang;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;import org.springframework.cloud.netflix.feign.EnableFeignClients;@SpringBootApplication@EnableEurekaClient//@EnableFeignClients(basePackages = "com.dalaoyang.interfaces")@EnableFeignClientspublic class SpringcloudFeignApplication {	public static void main(String[] args) {		SpringApplication.run(SpringcloudFeignApplication.class, args);	}}复制代码

创建Feign暴露接口,接口上加入@FeignClient(value="service",fallback = FeignFallbackService.class) 注解。 service为要远程调用服务的名字,即你要调用服务的spring.application.name

fallback为远程调用失败后回调的方法。代码如下:

package com.dalaoyang.interfaces;import com.dalaoyang.back.FeignFallbackService;import org.springframework.cloud.netflix.feign.FeignClient;import org.springframework.web.bind.annotation.GetMapping;/** * @author dalaoyang * @Description * @project springcloud_learn * @package com.dalaoyang.interfaces * @email yangyang@dalaoyang.cn * @date 2018/4/20 */@FeignClient(value="service",fallback = FeignFallbackService.class)//这里是要远程调用的服务的名称,即你要调用服务的spring.application.name//fallback是远程调用失败回调的方法public interface FeignInterface {    @GetMapping("/")    String IndexInfo();}复制代码

远程调用失败回调类FeignFallbackService,要实现对应的FeignClient实现对应的方法:

package com.dalaoyang.back;import com.dalaoyang.interfaces.FeignInterface;import org.springframework.stereotype.Service;/** * @author dalaoyang * @Description * @project springcloud_learn * @package com.dalaoyang.back * @email yangyang@dalaoyang.cn * @date 2018/4/20 */@Servicepublic class FeignFallbackService implements FeignInterface {    @Override    public String IndexInfo(){        return "远程调用失败!";    };}复制代码

最后看一下配置文件,需要注意的是feign.hystrix.enabled,如果配置远程调用回调的话需要声明一下Feign的 hystrix支持,不然页面还是会显示错误。

##端口号server.port=8765##服务名称spring.application.name=service_feign##注册中心地址eureka.client.service-url.defaultZone=http://eureka.dalaoyang.cn/eureka/##声明Feign的 hystrix支持feign.hystrix.enabled=true复制代码

启动service-feign(8765),先去看一眼http://eureka.dalaoyang.cn

可以看到服务注册成功,然后访问http://localhost:8765/,可以看到页面和使用ribbon的时候一样交替显示。

控制台

然后我们关闭service(8762),service(8763)两个服务,再次访问,可以看到

源码下载 :

个人网站:

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

你可能感兴趣的文章
js阻止事件冒泡 return false / e.stopPropagation() /e.preventDefault()
查看>>
CSS伪类使用
查看>>
哈佛成功金句
查看>>
iview Table表格单选框互斥
查看>>
leetcode278
查看>>
CodeForces-771D-Bear and Company
查看>>
PAT 1032 Sharing
查看>>
Extjs设置或获取cookie
查看>>
CC2541蓝牙BLE4.0主从透传工程
查看>>
iOS OC中block使用
查看>>
python之路--操作系统介绍,进程的创建
查看>>
markdown语法小结
查看>>
Java Gui 设计模式中的事件监听
查看>>
JavaSE-final关键字
查看>>
python自动化开发-1
查看>>
Remote远程特性的使用
查看>>
orm在django中的简单使用
查看>>
poj 2373 Dividing the Path
查看>>
dplyr 数据操作 常用函数(4)
查看>>
A股实时股票行情,指数行情web API 使用方法
查看>>