Spring cloud Feign

1. dependency

dependencies {
    compile("org.springframework.cloud:spring-cloud-starter-feign")
    ……
}

2. annotation

@SpringBootApplication
@EnableFeignClients
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

3. feign client

#不使用服務發現,直接配置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不同。

4. 打開feign log

feign clients默認的Logger.Level對象定義的是NONE級別,要想打開:
首先:

@Configuration
public class GlobalFeignConfiguration {
    @Bean
    Logger.Level feignLoggerLevel() {
        return Logger.Level.FULL;
    }
}

然後,開啓具體feign client logger:

#application.yaml

logging:
  level:
    <packageName>.<FeignInterfaceName>: DEBUG

或者針對性對feignClient進行配置:

@FeignClient(name = "invokeClient", configuration = GlobalFeignConfiguration.class, url = "localhost:8001")
public interface InvokeClient {

}

附:

controller與feignClient的接口定製方式相同,實踐中可以考慮由provider,也就是controller方提供統一接口,避免重複。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章