SpringCloud @FeignClient的类注解@ReqestMapping无效报错:No message available","path":"/xxxx
最近在使用Feign组合微服务的时候发现在@FeignClient接口类上使用@ReqestMapping无效。
像下面的这个代码:
@FeignClient("xxx")
@RequestMapping("/owner")
public interface OwnerApi{
    @RequestMapping("/insert")
    public Result add(@RequestBody AzpOwner bean);
    @RequestMapping("/delete")
    public Result delete(Long id);
    @RequestMapping("/update")
    public Result update(@RequestBody AzpOwner bean);
    @RequestMapping("/findById")
    public Result find(Long id);
}
当我们启动服务并调用生产者的时候,报如下的错误:

我一直以为是我的代码有问题,最后发现是SpringMVC和Feign在加载RequestMapping冲突的原因(参考:http://blog.didispace.com/spring-cloud-feignclient-problem/?utm_source=tuicool&utm_medium=referral)
解决方案就是修改SpringMVC的配置让他不映射带有@FeignClient注解的路径,配置类如下:
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.web.WebMvcRegistrations;
import org.springframework.boot.autoconfigure.web.WebMvcRegistrationsAdapter;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.AnnotatedElementUtils;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; import feign.Feign; @Configuration
@ConditionalOnClass({Feign.class})
public class FeignConfiguration {
@Bean
public WebMvcRegistrations feignWebRegistrations() {
return new WebMvcRegistrationsAdapter() {
@Override
public RequestMappingHandlerMapping getRequestMappingHandlerMapping() {
return new FeignRequestMappingHandlerMapping();
}
};
} private static class FeignRequestMappingHandlerMapping extends RequestMappingHandlerMapping {
@Override
protected boolean isHandler(Class<?> beanType) {
return super.isHandler(beanType) &&
!AnnotatedElementUtils.hasAnnotation(beanType, FeignClient.class);
}
}
}
需要注意的小细节是该类需要放到@Application的子包下才能被扫描生效
SpringCloud @FeignClient的类注解@ReqestMapping无效报错:No message available","path":"/xxxx的更多相关文章
- linux下启动dbca或netmgr类的图形界面报错解决
		
linux下启动dbca或netmgr类的图形界面报错解决 Xlib: connection to ":0.0" refused by server Xlib: No pro ...
 - SpringBoot 报错:  Circular view path [readingList] 解决办法
		
spring boot报错: Circular view path [readingList]: would dispatch back to the current handler URL [/re ...
 - maven项目启动报错:SLF4J: Class path contains multiple SLF4J bindings.
		
SringBoot的Application启动报错: SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding ...
 - python webdriver 报错WebDriverException: Message: can't access dead object的原因(pycharm中)
		
PyCharm中运行firefox webdriver访问邮箱添加通讯录的时候报错-WebDriverException: Message: can't access dead object 调了半天 ...
 - java调用sqlldr报错:Message 2100 not found
		
java调用Oracle的sqlldr命令报错:Message 2100 not found; No message file for product=RDBMS, facility=ULMessag ...
 - subprocess.Popen 运行windows命令出现“句柄无效”报错的解决方法
		
在框架开发中遇到 subprocess执行多了,就会好句柄无效的问题,终于找到解决方案:如下,修改subprocess中的一点代码就好,也不知道这是不是Python 的bug因为,Python27时没 ...
 - 【Java报错】Message: 3 字节的 UTF-8 序列的字节 2 无效
		
报错logs 2015-03-10 10:15:32,360 ERROR [qtp32195030-27] [InvokeAfterValve.java:55] - javax.xml.stream. ...
 - moviepy音视频剪辑VideoClip类fl_image方法image_func报错ValueError: assignment destination is read-only解决办法
		
☞ ░ 前往老猿Python博文目录 ░ moviepy音视频剪辑模块的视频剪辑基类VideoClip的fl_image方法用于进行对剪辑帧数据进行变换. 调用语法:fl_image(self, im ...
 - jenkins添加类ubuntu/centos节点报错
		
前言:在jenkins添加ubuntu节点,发现启动代理报错 以下是报错: [SSH] Checking java version of /usr/java/latest/bin/java Could ...
 
随机推荐
- web.xml 中CharacterEncodingFilter类的学习
			
过滤器配置 当前台JSP页面和JAVA代码中使用了不同的字符集进行编码的时候就会出现表单提交的数据或者上传/下载中文名称文件出现乱码的问题 //编码方式配置 <filter> <fi ...
 - Part 3:视图和模板--Django从入门到精通系列教程
			
该系列教程系个人原创,并完整发布在个人官网刘江的博客和教程 所有转载本文者,需在顶部显著位置注明原作者及www.liujiangblog.com官网地址. Python及Django学习QQ群:453 ...
 - 浅谈最大流的Dinic算法
			
PART 1 什么是网络流 网络流(network-flows)是一种类比水流的解决问题方法,与线性规划密切相关.网络流的理论和应用在不断发展,出现了具有增益的流.多终端流.多商品流以及网络流的分解与 ...
 - c# 可变字符串 StringBuilder
			
普通的string不可变,除非用+ 但是+两个字符串后 会生成一个新的string实例.会在内存中创建新的字符串对象.如果重复的对字符串修改,将极大的增加内存开销.c#提供了个可变的字符串序列Stri ...
 - CORS跨域请求之简单请求与非简单请求
			
先来看一个例子 定义server01的项目,在路由表中添加一条路由记录 url(r'^getData.html$',views.get_data) 对应的视图函数 from django.shortc ...
 - 前端 js技术
			
1.JavaScript代码存在形式 <!-- 方式一 --> <script type"text/javascript" src="JS文件" ...
 - javascript:Json 和数组的遍历
			
首先看代码示例var json={a:1,b:2,c:3}; //json var array={1,2,3}; //数组 alert(json.a); //弹出1 或alert(json['a']) ...
 - 洛谷 [P2774] 方格取数问题
			
二分图最大点权独立集 通过题目描述我们可以很明显的看出要通过二分图建模,二分图求最大独立点集很容易,就是建立二分图求n-最小割,然而这里加入了权值,而且权值是在点上的,那么我们对于每个点连一条到源点或 ...
 - 自动化测试selenium(四)check,选中复选框,操作一组元素
			
定位复选框位置 打开浏览器,按F12,审查元素 接下来,我们要实现选中复选框 List<WebElement> inputs = driver.findElements(By.tagNam ...
 - 10位时间戳转为C#格式时间
			
/// <summary> /// 10位时间戳转为C#格式时间 /// </summary> /// <param name=”timeStamp”></p ...