国产探花免费观看_亚洲丰满少妇自慰呻吟_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(); }  
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 康定县| 汉沽区| 泸溪县| 周口市| 临汾市| 南昌市| 武宣县| 荣成市| 吉木萨尔县| 马公市| 鹤壁市| 陇西县| 桂东县| 邛崃市| 陈巴尔虎旗| 东乌珠穆沁旗| 泸溪县| 株洲县| 武胜县| 安塞县| 斗六市| 板桥市| 仁化县| 漳平市| 育儿| 南澳县| 亚东县| 江源县| 汉寿县| 商洛市| 富川| 榆树市| 洪洞县| 大化| 云南省| 龙山县| 荔波县| 明水县| 永福县| 阿克陶县| 太湖县|