• spring cloud Feign 使用 @RequestLine 注解遇到的问题


    package com.itmuch.cloud;
    
    import org.springframework.cloud.netflix.feign.FeignClient;
    
    import com.itmuch.cloud.entity.User;
    import com.itmuch.config.FeignConfiguration;
    
    import feign.Param;
    import feign.RequestLine;
    /**
     * 客户端请去
     * @author Administrator
     *
     */
    @FeignClient(name="microservice-provider-user",configuration=FeignConfiguration.class)
    public interface UserFeignClient {
        
        
        @RequestLine("GET /simple/{id}")
        public  User findById(@Param("id") Long id);
        
    }

    启动报错:  Method getLinksForTrack not annotated with HTTP method type (ex. GET, POST)

    网上百度下都是说 @RequestLine is a core Feign annotation, but you are using the Spring Cloud @FeignClientwhich uses Spring MVC annotations. 

    意思就是feign 默认使用的是spring mvc 注解(就是RequestMapping 之类的), 所以需要配置feign的Configuration ..

    很显然我上面的代码显示我配置了  configuration .. 

    package com.itmuch.config;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    import feign.Contract;
    
    @Configuration
    public class FeignConfiguration {
        
        @Bean
        public Contract feignConfiguration(){
            return new feign.Contract.Default();
        }
    }

    .. 但是还是会报错。。 最后发现 是  feignConfiguration 这个命名的问题,和 类名一样。。 我随便该了一个名字就可以正常启动了。。

    可能是@Bean 的原因。。接下来我查了下:

    @Bean是一个方法级别上的注解,主要用在@Configuration注解的类里也可以用在@Component注解的类里。添加的bean的id为方法名。 

    注意   添加bean的 ID 是 方法名。

    那么配置一个和 @Configuration 注解的类同名的   ID 名的 bean 有什么影响吗 

    <bean id="feignConfiguration" class="org.springframework.context.annotation.Configuration"> 

    我觉得是spring  把 @Configuration 注解的类不注册到 spring 容器中,由于正好你定义的bean 的id 和 类名相同,导致spring没有注册该bean, 

    所以相当于没有配置启用feign 注解,所有报错。。

    上面是我的猜测,知道的大神可以指教一下。

  • 相关阅读:
    Linux 一块网卡配置多个IP的方法
    Nginx详解篇
    Nginx故障排错及一个网站小实例
    Nginx web 服务器 安装篇
    一些看起来比较专业的工具
    Linux 下软件的安装方法
    Mysq登陆后执行命令提示You must SET PASSWORD before executing this statement
    Linux-Centos 虚拟机安装
    Mysql的多种安装方法———rpm安装
    etcd安装和简单使用
  • 原文地址:https://www.cnblogs.com/zhangchenglzhao/p/9128631.html
Copyright © 2020-2023  润新知