国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 幫助中心 > 正文

springboot FeignClient注解及參數

2024-07-09 22:42:43
字體:
來源:轉載
供稿:網友

一、FeignClient注解

FeignClient注解被@Target(ElementType.TYPE)修飾,表示FeignClient注解的作用目標在接口上

@FeignClient(name = "github-client", url = "https://api.github.com", configuration = GitHubExampleConfig.class)public interface GitHubClient {  @RequestMapping(value = "/search/repositories", method = RequestMethod.GET)  String searchRepo(@RequestParam("q") String queryStr);}

聲明接口之后,在代碼中通過@Resource注入之后即可使用。@FeignClient標簽的常用屬性如下:

name:指定FeignClient的名稱,如果項目使用了Ribbon,name屬性會作為微服務的名稱,用于服務發現 url: url一般用于調試,可以手動指定@FeignClient調用的地址 decode404:當發生http 404錯誤時,如果該字段位true,會調用decoder進行解碼,否則拋出FeignException configuration: Feign配置類,可以自定義Feign的Encoder、Decoder、LogLevel、Contract fallback: 定義容錯的處理類,當調用遠程接口失敗或超時時,會調用對應接口的容錯邏輯,fallback指定的類必須實現@FeignClient標記的接口 fallbackFactory: 工廠類,用于生成fallback類示例,通過這個屬性我們可以實現每個接口通用的容錯邏輯,減少重復的代碼 path: 定義當前FeignClient的統一前綴
@FeignClient(name = "github-client",    url = "https://api.github.com",    configuration = GitHubExampleConfig.class,    fallback = GitHubClient.DefaultFallback.class)public interface GitHubClient {  @RequestMapping(value = "/search/repositories", method = RequestMethod.GET)  String searchRepo(@RequestParam("q") String queryStr);   /**   * 容錯處理類,當調用失敗時,簡單返回空字符串   */  @Component  public class DefaultFallback implements GitHubClient {    @Override    public String searchRepo(@RequestParam("q") String queryStr) {      return "";    }  }}

在使用fallback屬性時,需要使用@Component注解,保證fallback類被Spring容器掃描到,GitHubExampleConfig內容如下:

@Configurationpublic class GitHubExampleConfig {  @Bean  Logger.Level feignLoggerLevel() {    return Logger.Level.FULL;  }}

在使用FeignClient時,Spring會按name創建不同的ApplicationContext,通過不同的Context來隔離FeignClient的配置信息,在使用配置類時,不能把配置類放到Spring App Component scan的路徑下,否則,配置類會對所有FeignClient生效.

二、Feign Client 和@RequestMapping

當前工程中有和Feign Client中一樣的Endpoint時,Feign Client的類上不能用@RequestMapping注解否則,當前工程該endpoint http請求且使用accpet時會報404
Controller:

@RestController@RequestMapping("/v1/card")public class IndexApi {   @PostMapping("balance")  @ResponseBody  public Info index() {    Info.Builder builder = new Info.Builder();    builder.withDetail("x", 2);    builder.withDetail("y", 2);    return builder.build();  }}

Feign Client

@FeignClient(    name = "card",    url = "http://localhost:7913",    fallback = CardFeignClientFallback.class,    configuration = FeignClientConfiguration.class)@RequestMapping(value = "/v1/card")public interface CardFeignClient {   @RequestMapping(value = "/balance", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)  Info info(); }  
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汤阴县| 宜君县| 四川省| 晋州市| 靖西县| 海晏县| 吉隆县| 吴堡县| 缙云县| 临潭县| 沅陵县| 云林县| 安达市| 安远县| 海晏县| 阜康市| 商都县| 启东市| 神池县| 静宁县| 万山特区| 盘山县| 南和县| 莫力| 桦南县| 河南省| 金堂县| 仁布县| 察隅县| 和政县| 达日县| 壤塘县| 岗巴县| 许昌市| 秦安县| 洛隆县| 特克斯县| 浪卡子县| 庄河市| 乐山市| 福建省|