大多數情況是真的而沒有寫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.