dependencies { compile("org.springframework.cloud:spring-cloud-starter-feign") …… }
@SpringBootApplication @EnableFeignClients public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
#不使用服務發現,直接配置url; #使用服務發現,不配置url,name爲service_id,另外project注意加入服務發現依賴、打開服務發現配置 @FeignClient(name = "invokeClient", url = "localhost:8001") public interface InvokeClient { @GetMapping("/user/{id}/username") public String name(@PathVariable("id") String id); }
注意,雖然支持spring MVC的annotation,但@PathVariable、@RequestParam、@RequestHeader等參數名的註解,必定要設置value值,這點與寫controller不一樣。spring
feign clients默認的Logger.Level對象定義的是NONE級別,要想打開:
首先:app
@Configuration public class GlobalFeignConfiguration { @Bean Logger.Level feignLoggerLevel() { return Logger.Level.FULL; } }
而後,開啓具體feign client logger:ide
#application.yaml logging: level: <packageName>.<FeignInterfaceName>: DEBUG
或者針對性對feignClient進行配置:url
@FeignClient(name = "invokeClient", configuration = GlobalFeignConfiguration.class, url = "localhost:8001") public interface InvokeClient { }
controller與feignClient的接口定製方式相同,實踐中能夠考慮由provider,也就是controller方提供統一接口,避免重複。code