大多数情况是真的而没有写method = RequestMethod.GET、POST等注解, 有时这么写了也报类似异常,如下
@FeignClient("microservice-provider-user")
public interface MyFeignClient {
@RequestMapping(value = "a",method = RequestMethod.GET)
public User findByIdE(@RequestParam("id") Long id);
@RequestMapping(method = RequestMethod.POST,value = "/getUserByPost")
User findBy(@RequestBody User user);
}
java.lang.IllegalStateException: Method findByIdE not annotated with HTTP method type (ex. GET, POST)
问题原因,是因为这个类的存在,在其中 new feign.Contract.Default();使用了默认的Contract导致。
package com.itmuch.cloud.study.user.feign;
import feign.Contract;
import feign.Logger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MyFeignConfiguration {
@Bean
public Contract feignContract(){
return new feign.Contract.Default();
}
@Bean
public Logger.Level logLevel(){
return Logger.Level.FULL;
}
}
解决方法:换其他Contract.