我是靠谱客的博主 伶俐短靴,最近开发中收集的这篇文章主要介绍关于FeignClient上的RequestMapping不能生效的问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

问题
我有两个FeignClient共同继承了一个接口,两个Client有各自不同的url实现,其中一个需要加上类似于@RequestMapping作用在类上的效果,因为@RequestMapping在FeignClient中作用在方法上是有效的,如果和@Controller一样放在类上是不是能实现呢,试了一下发现@RequestMapping与@FeignClient共同作用在一个类上时并不会生效。

原因
通过源码可得FeignClient注入时通过FeignClientFactoryBean进行Bean的初始化,在其中并没有对RequestMapping进行处理。

解决过程
小知识1:FeignClient是一个通过HTTP协议进行请求的RPC框架,而且是使用的RestTemplate进行封装的,那么其中肯定有对url的封装。我只需要找到在封装url时看看能不能加上一段地址就好。

小知识2:在依赖注入时SpringFactory会通过doGetBean()方法去找到对应的Bean信息, 如果该Instance是一个BeanFactory那么会通过Beanfactory.getObject()来获取对象。那么我只需要进入到FeignClienFactoryBean中查看对应的方法就好了。

那么在源码中找到了对应的处理代码如下:

this.url = this.url + this.cleanPath();

private String cleanPath() {
    String path = this.path.trim();
    if (StringUtils.hasLength(path)) {
        if (!path.startsWith("/")) {
            path = "/" + path;
        }
        if (path.endsWith("/")) {
            path = path.substring(0, path.length() - 1);
        }
    }
        return path;
}

在上述代码中可以发现可以通java教程过设置path属性来达到我要的效果。

结果
通过设置@FeignClient中的path属性可以完成我所需的效果。 @FeignClient(name="serviceName", url = "http://localhost:8080", path="value")

__EOF__

  • 本文作者: T-Yihang
  • 本文链接: 关于FeignClient上的RequestMapping不能生效的问题 - T-Yihang - 博客园

最后

以上就是伶俐短靴为你收集整理的关于FeignClient上的RequestMapping不能生效的问题的全部内容,希望文章能够帮你解决关于FeignClient上的RequestMapping不能生效的问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部