首先先创建一个FeignConfig类,代码如下:

package com.xing.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope; import feign.Contract;
import feign.Feign; @Configuration
public class FeignConfig { //配置是在FeignClient中的接口中使用Feign自带的注解
@Bean
public Contract feignContract(){
return new feign.Contract.Default();
} //禁用Hystrix
@Bean
@Scope("prototype")
public Feign.Builder feignBuilder() {
return Feign.builder();
} }

第一个bean配置的是使用Feign的默认注解,添加第一个配置之后,下面的UserInterface类就一定要使用@RequestLine这个注解才行(这个是Feign的注解),使用@RequestMapping会报Method findByNameEn not annotated with HTTP method type (ex. GET, POST)的异常,

如果你要使用@RequestMapping这个注解你就把feignContract这个方法注释掉,就好了。

第二个bean配置的是是禁用Hystrix

接着Feign调用User服务的接口类UserInterface中的@FeignClient注解中添加configuration = FeignConfig.class就可以吧我们上面的config加载进来,我这里就直接把这个类贴出来了

package com.xing.movie.FeignInteface;

import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import com.xing.config.FeignConfig;
import com.xing.movie.entity.User; import feign.Param;
import feign.RequestLine;
import feign.hystrix.FallbackFactory; //@FeignClient中的fallback和fallbackFactory不能一起使用
@FeignClient(name = "xing-user" ,/*fallback = UserInterfaceFallback.class,*/configuration = FeignConfig.class , fallbackFactory = HystrixClientFallbackFactory.class)//服务名
public interface UserInterface {
//@RequestMapping(value ="/user/findByNameEn/{nameEn}" ,method =RequestMethod.GET ) //必须使用RequestMapper,使用GetMapping启动报错
@RequestLine("GET /user/findByNameEn/{nameEn}") //当配置了feignContract之后要使用这个Feign的注解,使用上面的报错,如果配置了这个,那下面方法里面必须使用@Param不能使用@PathVariable
public User findByNameEn(@Param("nameEn") String nameEn);//@Param后面需要指定nameEn,不然可能报错 }
//不一定要内部类可以是外部类
//Hystrix异常处理类 ,返回空的user
@Component
class UserInterfaceFallback implements UserInterface {
@Override
public User findByNameEn(String nameEn) {
User user = new User();
user.setName("");
user.setNameEn("");
user.setId(0);
return user;
}
} //Hystrix 访问异常时可以显示错误信息
@Component
class HystrixClientFallbackFactory implements FallbackFactory<UserInterface> { @Override
public UserInterface create(Throwable cause) { return new UserInterface() { @Override
public User findByNameEn(String nameEn) {
return new User("fallback;reason was : "+cause.getMessage(), " ", 0);
}
};
} }

这样就可以禁用掉Feign的Hystrix,测试成功,我这里额外配置fallback 和fallbackFactory 这两个方法是配置了当Feign调用异常的时候fallback方法是返回一个空的user,而fallbackFactory方法可以打印异常信息我把异常信息放在User类的name属性中返回了,如果调用服务异常的话页面的结果如下:

完整源码在https://github.com/OnlyXingxing/SpringCloud

在Feign中添加自定义配置的更多相关文章

  1. springboot2.0application.在yml文件中添加自定义配置

    1. 在application.yml文件中添加自定义配置 app: platform: version: code: '1.0.0' 2. 定义bean类   具体格式: 其中的成员变量名称需要与配 ...

  2. feign中的hytrix和turbin配置

    这里我用了两个生产者和两个消费者进行演示,如下图(画的不好看,凑活看看): 这里我就只讲下怎么注册到dashbord和相关的配置,提供者和消费者等代码可以去下载查看: https://github.c ...

  3. 在Web.config或App.config中的添加自定义配置

    .Net中的System.Configuration命名空间为我们在web.config或者app.config中自定义配置提供了完美的支持.最近看到一些项目中还在自定义xml文件做程序的配置,所以忍 ...

  4. 在Web.config或App.config中的添加自定义配置 <转>

        .Net中的System.Configuration命名空间为我们在web.config或者app.config中自定义配置提供了完美的支持.最近看到一些项目中还在自定义xml文件做程序的配置 ...

  5. Feign中使用hystrix

    Feign中使用hystrix 一.在Order工程中的bootstrap.yml中增加配置 feign: hystrix: enabled: true

  6. Feign自定义编程配置

    介绍 在Spring Cloud中,Feign的默认配置类是FeignClientsConfiguration,该类定义了Feigh默认使用的编码器.解码器.所使用的契约等.Spring Cloud允 ...

  7. feign三:覆写feign的默认配置及feign的日志

    feign三:覆写feign的默认配置及feign的日志 默认配置复写 本项目地址:http://192.168.1.103:7601 本例是通过feign调用 eureka项目中的/eureka/a ...

  8. Spring Boot和Feign中使用Java 8时间日期API(LocalDate等)的序列化问题【转】

    Spring Boot和Feign中使用Java 8时间日期API(LocalDate等)的序列化问题 http://blog.didispace.com/Spring-Boot-And-Feign- ...

  9. Springcloud 中 SpringBoot 配置全集 (收藏版)

    Springcloud 中 SpringBoot 配置全集 (收藏版) 疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 前言 疯狂创客圈(笔者尼恩创建的高并发研习社群 ...

随机推荐

  1. GeneXus笔记本—城市级联下拉

    最近在交流GeneXus的时候 总是会遇到有城市级联下拉的问题 这里就简单做几种方式 供大家参考参考 第一种就是直接绑定关联信息然后在后者的条件模块设定条件即可 具体如下: 首先我们所需要的表为pro ...

  2. sql 根据身份证判断年龄是否小于18岁

    SELECT *, Age= datediff(yy,cast(case when substring(PersonalId,,) ') /*若第7位不是'1'或'2'则表示是15位身份证编码规则*/ ...

  3. Apache+tomcat 动静分离

    环境准备: Centos7 需要软件 jdk-8u45-linux-x64.tar.gz apache-tomcat-.tar.gz apr-.tar.gz apr-util-.tar.gz pcre ...

  4. 2019 ICPC Universidad Nacional de Colombia Programming Contest C D J

    C. Common Subsequence 题意:给出长度为n两个串,求两个串的最长公共子序列len,如果len>=0.99*n,两个串就是亲兄弟否则不是. 解法:朴素的求LCS的时间复杂度是O ...

  5. 九、结构模式之装饰(Decorator)模式

    装饰模式又叫包装模式,装饰模式以客户端透明的方式扩展对象的功能,是继承关系的一个替代方案.装饰模式可以在不使用创造更多的子类的情况下,将对象的功能加以扩展. 装饰模式结构图如下: 其包含的角色就分为: ...

  6. 力扣 ——3Sum python (三数之和)实现

    题目描述: 中文: 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组. 英文: Give ...

  7. 关于Linux_系统资源监控_dmesg_free_uptime_uname

    (系统资源查看命令-dmesg[查看系统内核资源信息])->判断服务器的硬件状态 Comment:dmesg | grep CPU,指定查看cpu资源信息 (系统资源查看命令-free[查看内存 ...

  8. 使用 v-html 绑定值

    <div id="app03"> <div v-html="message"></div> <!--这里使用v-htm ...

  9. Linux 查看文件夹大小(排序)

    du -s * | sort -nr (-n是按数字大小排序,不能加上参数h)

  10. mybatis中一对多查询collection关联不执行

    今天遇到的原因是因为下面红底id没有,导致关联查询没有条件(id字段没传),所以一直没有执行. <?xml version="1.0" encoding="UTF- ...