精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

從靜態到動態!Spring Boot 動態創建配置Feign Client

開發 前端
在微服務架構中,Feign堪稱開發者的得力助手——它是一款聲明式的HTTP客戶端,能讓調用其他服務變得像編寫接口一樣簡單。然而,如果你的Feign客戶端配置(如基礎URL、超時時間或認證信息)需要動態化,那該怎么辦呢?

環境:SpringBoot3.4.2

1. 簡介

在微服務架構中,Feign堪稱開發者的得力助手——它是一款聲明式的HTTP客戶端,能讓調用其他服務變得像編寫接口一樣簡單。然而,如果你的Feign客戶端配置(如基礎URL、超時時間或認證信息)需要動態化,那該怎么辦呢?

將這類值硬編碼在application.yml文件中,對于靜態環境而言尚可接受,但在實際場景中,我們往往需要運行時靈活性:

  • 多租戶應用中,每個客戶的API端點可能各不相同
  • 從數據庫或配置服務器獲取的環境特定配置
  • 根據業務邏輯動態路由到不同的微服務

本篇文章我們將通過數據庫動態配置Feign客戶端。

2.實戰案例

2.1 定義Feign基本配置實體

@Entity
@Table(name = "t_feign_config")
public class FeignConfig {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id ;
  /**客戶端名稱*/
  private String clientName ;
  /**該客戶端的baseUrl*/
  private String baseUrl ;
  /**請求超時配置*/
  private Long connectTimeout ;
  private Long readTimeout ;
  private String apiKey ;
  // getters, setters
}

該實體對象中我們定義了Feign客戶端所需要的基本信息。準備如下數據:

圖片圖片

2.2 定義Repository接口

在該Repository中,我們僅提供了一個方法,通過clientName查詢對應的配置詳細。

public interface FeignConfigRepository extends JpaRepository<FeignConfig, Long> {
  /**根據clientName查詢Feign配置*/
  Optional<FeignConfig> findByClientName(String clientName) ;
}

2.3 定義Service

@Service
public class FeignConfigService {
  private final FeignConfigRepository configRepository ;
  public FeignConfigService(FeignConfigRepository configRepository) {
    this.configRepository = configRepository;
  }


  public FeignConfig getClientConfig(String clientName) {
    return configRepository.findByClientName(clientName)
        .orElseThrow(() -> new RuntimeException("Feign 配置不存在: " + clientName));
  }
}

2.4 Feign客戶端創建工廠

@Component
public class FeignClientFactory {
  private final FeignConfigService configService;
  private final ObjectFactory<HttpMessageConverters> messageConverters ;
  public FeignClientFactory(FeignConfigService configService, 
      ObjectFactory<HttpMessageConverters> messageConverters) {
    this.configService = configService;
    this.messageConverters = messageConverters ;
  }
  public <T> T getClient(Class<T> clientType, String clientName) {
    FeignConfig config = configService.getClientConfig(clientName) ;
    Request.Options options = new Request.Options(config.getConnectTimeout(), TimeUnit.MILLISECONDS,
        config.getReadTimeout(), TimeUnit.MILLISECONDS, false);
    return Feign.builder()
        .encoder(new SpringEncoder(this.messageConverters))
        .decoder(new SpringDecoder(messageConverters))
        .contract(new SpringMvcContract())
        .retryer(Retryer.NEVER_RETRY)
        .requestInterceptor(template -> template.header("Authorization", "Bearer " + config.getApiKey()))
        .options(options)
        .target(clientType, config.getBaseUrl()) ;
  }
}

每次在調用時都從數據庫中獲取最新的配置創建對象。

2.5 測試

@RestController
@RequestMapping("/test")
public class TestController {
  private final FeignClientFactory factory;
  public TestController(FeignClientFactory factory) {
    this.factory = factory;
  }
  @GetMapping("/user/query")
  public UserDTO query() {
    return this.factory
        .getClient(UserClient.class, "user-client")
        .query() ;
  }
}
調用的接口
@RestController
@RequestMapping("/users")
public class UserController {
  @GetMapping("/query")
  public ResponseEntity<?> query() {
    return ResponseEntity.ok(new User("pack", "123123", new Date(), "xxgg@qq.com")) ;
  }
}

執行結果

圖片圖片

以上我們就完成了基于數據庫的Feign的動態配置。

默認情況下,spring-cloud-openfeign 已經提供了一定程度的動態配置支持,尤其在以下兩個關鍵場景中表現尤為突出:

  • 動態配置請求超時時間
  • 動態刷新請求的url

接下來,我們將通過具體代碼示例,演示如何利用 spring-cloud-openfeign 的現有能力實現上述兩種動態配置功能,幫助你快速掌握這一核心特性。

2.6 動態配置請求超時時間

首先,準備三方接口(模擬耗時)。

@GetMapping("/list")
public ResponseEntity<?> list() throws Exception {
  List<User> users = List.of(
        new User("張三", "111111", new Date(), "zs@gmail.com"),
        new User("李四", "222222", new Date(), "ls@gmail.com"),
        new User("王五", "333333", new Date(), "ww@gmail.com"),
        new User("趙六", "444444", new Date(), "zl@gmail.com")
      ) ;
  // 模擬耗時4s
  TimeUnit.SECONDS.sleep(4) ;
  return ResponseEntity.ok(users) ;
}

其次,定義Feign接口。

@FeignClient(name = "user-client", url = "http://localhost:8080")
public interface UserDefaultClient {


  @GetMapping("/users/list")
  List<UserDTO> list() ;
}

最后,為user-client配置超時時間。

spring:
  cloud:
    openfeign:
      client:
        config:
          user-client:
            read-timeout: 3000

設置讀數據超時時間為3s(我們上面接口模擬了4s才會輸出內容)。

測試接口
private final UserDefaultClient defaultClient ;
public TestController(UserDefaultClient defaultClient) {
  this.defaultClient = defaultClient ;
}
@GetMapping("/user/list2")
public List<UserDTO> list2() {
  return this.defaultClient.list() ;
}

圖片圖片

圖片

拋出了超時異常。

接下來,我們引入actuator。

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

配置actuator。

management:
  endpoints:
    web:
      base-path: /ac
      exposure:
        include:
        - refresh

我們再次啟動服務;啟動服務后,我們直接修改配置如下:

spring:
  cloud:
    openfeign:
      client:
        config:
          user-client:
            read-timeout: 5000

接著調用 /ac/refresh 接口。

圖片圖片

發現了配置的變化,再次訪問接口。

圖片圖片

動態刷新配置成功。

2.7 動態刷新請求URL

首先,修改Feign定義接口如下:

@FeignClient(name = "user-client")
public interface UserDefaultClient {


  @GetMapping("/users/list")
  List<UserDTO> list() ;
}

注意:這里我們并沒有定義url屬性,我們會在配置文件中定義。

其次,配置文件中定義user-client客戶端請求的url。

spring:
  cloud:
    openfeign:
      client:
        config:
          user-client:
            url: http://localhost:8080

最后,我們還是訪問上面的接口。

圖片圖片

成功;修改請求的url如下:

spring:
  cloud:
    openfeign:
      client:
        config:
          user-client:
            url: http://localhost:8081

將端口改錯;接下來,調用/ac/refresh接口。

圖片圖片

再次訪問接口。

圖片圖片

圖片

連接錯誤了,請求的端口變為8081。

責任編輯:武曉燕 來源: Springboot全家桶實戰案例
相關推薦

2020-05-05 23:05:53

物聯網靜態產品動態服務

2009-03-25 09:05:24

微軟Windows 7操作系統

2024-08-09 08:46:00

Springjar 包YAML

2011-04-12 09:53:32

Spring

2025-02-07 09:11:04

JSON對象策略

2024-09-24 10:40:07

2024-09-26 19:36:58

2022-12-19 08:32:57

項目Feign框架

2025-06-03 08:20:00

Feign微服務

2025-01-26 00:00:40

微服務架構服務

2021-10-18 12:04:22

Spring BootJava開發

2021-10-18 10:36:31

Spring Boot插件Jar

2009-07-02 13:36:24

動態頁面JSP技術

2022-09-01 10:40:29

SpringAOPJDK

2025-11-14 07:00:00

AI智能化自動化

2019-08-15 10:56:10

WebServletSpring mvc

2019-09-10 13:58:57

動態路由路由器網絡

2014-12-29 10:19:01

Java

2022-07-14 10:38:39

動態標簽Spring

2025-10-09 07:47:04

點贊
收藏

51CTO技術棧公眾號

91久久精品一区二区别| xvideos亚洲| 国产又大又黄又粗的视频| 国产福利第一视频在线播放| 久久国产尿小便嘘嘘| 久久亚洲精品网站| 中文字幕日韩三级片| 成人精品一区二区三区电影| 亚洲一区在线视频| 日韩欧美一区二区三区四区| 国产不卡av在线播放| 玖玖国产精品视频| 欧美日韩xxx| 日韩黄色中文字幕| 牛牛影视久久网| 777午夜精品免费视频| 日韩精品 欧美| 粗大黑人巨茎大战欧美成人| 91久色porny| 97超碰资源| 亚洲 国产 日韩 欧美| 欧美日韩国产高清| 少妇精69xxtheporn| 男男做爰猛烈叫床爽爽小说| 国产精品xnxxcom| 91黄色激情网站| 国产精品久久国产| 欧美日本一道| 欧美极品美女视频| 九色91国产| 欧美一级做性受免费大片免费| 日本中文字幕一区二区视频 | 亚洲少妇一区二区三区| 国产a亚洲精品| 色婷婷亚洲精品| 日韩一级性生活片| 污污的网站在线免费观看| 日本一区二区三区免费乱视频| 国内精品视频在线播放| 精品人妻一区二区三区含羞草 | 午夜欧美2019年伦理 | 亚洲欧洲一区| 精品国产欧美成人夜夜嗨| 国产sm调教视频| 亚洲都市激情| 精品一区二区三区四区在线| 欧美在线一级片| 国产毛片精品| 亚洲国产古装精品网站| 国产在线不卡av| 精品在线网站观看| 亚洲国产成人精品女人久久久| wwwxxxx在线观看| 精品一区二区三区四区五区 | 日本人妻丰满熟妇久久久久久| 国产成人av一区二区三区在线| 91视频九色网站| 精品久久久中文字幕人妻| 国产精品自拍毛片| 91久久国产精品| 国产免费叼嘿网站免费| 国产综合一区二区| 欧美精品自拍偷拍| av无码精品一区二区三区| 欧美成人黑人| 欧美性受xxxx黑人xyx性爽| 中文字幕国内自拍| 伊人亚洲精品| 欧美成人国产一区二区| 97精品人人妻人人| 丝袜连裤袜欧美激情日韩| 亚洲精品在线看| 日本美女xxx| 国产精品传媒精东影业在线| 久久国产精品网站| 永久免费看片在线播放| 另类av一区二区| 国产精品视频精品视频| 国产富婆一级全黄大片| 成人免费高清视频| 久久国产精品 国产精品| 国产私人尤物无码不卡| 中文字幕一区av| 蜜臀av色欲a片无码精品一区 | 真实国产乱子伦精品一区二区三区| 久久人人爽亚洲精品天堂| 免费无遮挡无码永久在线观看视频| 亚洲国产日本| 国产剧情久久久久久| 亚洲国产精品久久人人爱潘金莲| 97精品电影院| 综合色婷婷一区二区亚洲欧美国产| 羞羞的视频在线看| 欧美日韩在线免费| 一区二区三区国产好的精华液| www.亚洲一二| 一色桃子一区二区| 国产精品成人av久久| 日韩制服丝袜先锋影音| 99久久精品久久久久久ai换脸| 香蕉视频911| 亚洲欧美自拍偷拍色图| 九色在线视频观看| 国产一区二区三区免费观看在线 | 亚洲精品天堂网| 亚洲精品美女91| 91精品美女在线| 亚洲欧美自偷自拍| 亚洲精品成人精品456| 欧美日韩亚洲一二三| 7m精品国产导航在线| 中文字幕在线国产精品| 91在线看视频| 国产精一区二区三区| 日本一区二区三区视频在线播放| 日本动漫同人动漫在线观看| 欧美色综合网站| 亚洲蜜桃精久久久久久久久久久久| 亚洲乱码电影| 国产精品久在线观看| 亚洲日本香蕉视频| 亚洲一区二区三区四区的| 天天干天天av| 欧美精品羞羞答答| 2023亚洲男人天堂| 成人免费公开视频| 亚洲视频在线一区二区| 国产视频手机在线播放| 久久av影视| 2019av中文字幕| 隣の若妻さん波多野结衣| 亚洲天堂免费看| 欧美激情第3页| 日本在线电影一区二区三区| 欧美在线激情视频| 无码国产伦一区二区三区视频| 亚洲色图欧洲色图婷婷| www.色欧美| 日韩精品午夜| 国产精品视频地址| 日本视频不卡| 欧美日韩国产在线播放网站| www.av欧美| 久久天堂成人| 视频一区亚洲| 人人玩人人添人人澡欧美| 中文字幕亚洲精品| 在线观看中文字幕2021| 国产精品久久久爽爽爽麻豆色哟哟| 五月婷婷激情久久| 日本一区二区三区视频| 国产一区香蕉久久| 成人在线网址| 欧美变态口味重另类| 精品肉丝脚一区二区三区| 国产成人高清在线| 九九热只有这里有精品| 国产伦精品一区二区三区免费优势| 久久久久久中文字幕| 日批免费在线观看| 欧美色视频日本高清在线观看| 久久精品国产亚洲av麻豆| 国产日韩欧美一区| 你懂的网址一区二区三区| 日韩美女在线看免费观看| 国产一区二区黄| 91精品国自产| 有码一区二区三区| 国产毛片毛片毛片毛片毛片毛片| 亚洲在线成人| 亚洲黄色成人久久久| 国产免费av国片精品草莓男男| 久久这里只有精品99| 成人毛片在线精品国产| 一本色道久久综合亚洲91| 一二三四国产精品| 国产成人免费在线视频| 国产精品无码一区二区在线| 精品久久久久久久久久久aⅴ| 成人性生交xxxxx网站| 国产美女福利在线观看| 国产视频久久网| 国产又粗又猛又爽又黄的视频一| 一区二区三区久久| 日本高清www| 国产在线精品免费| 国产免费毛卡片| 欧美xxav| 精品欧美一区二区久久久伦| 成人国产精品一区二区免费麻豆| 色综合老司机第九色激情| 色播色播色播色播色播在线 | 内射无码专区久久亚洲| 色婷婷亚洲精品| 欧美精品99久久久| 久久久不卡网国产精品二区| 999久久久精品视频| 99精品视频免费观看视频| 亚洲乱码一区二区三区| 国产精品15p| 91精品久久久久久久久久久久久久 | 欧美成人精品一级| 日韩av电影手机在线| 青春草视频在线| 日韩在线视频网| 人成在线免费视频| 精品久久久久久久久久久久包黑料| 9i精品福利一区二区三区| 一区二区三区在线免费视频| 亚洲精品乱码久久久久久久久久久久| 国产福利不卡视频| 妺妺窝人体色www在线观看| 精品不卡视频| 中国 免费 av| 欧美美女一区| 免费国产一区二区| 凹凸成人在线| 18成人在线| 欧美韩国日本| 日本精品va在线观看| 欧美人与禽猛交乱配| 色综合亚洲精品激情狠狠| 黄色片免费在线| 日韩av影视综合网| 日本黄视频在线观看| 91麻豆精品国产91久久久使用方法| 69视频免费看| 欧美日韩国产中文精品字幕自在自线 | 亚洲精品欧美在线| 开心激情五月网| 欧美国产一区在线| a天堂中文字幕| 国产日韩欧美制服另类| 日韩人妻一区二区三区| 99精品国产热久久91蜜凸| 免费黄色a级片| 国产丶欧美丶日本不卡视频| 夜夜夜夜夜夜操| 久久99国产精品免费| 日韩精品视频一二三| 日韩av在线免费观看不卡| 青青在线视频免费| 免费国产亚洲视频| 九色porny自拍| 久久国内精品自在自线400部| 亚洲精品视频导航| 九九视频精品免费| 亚洲第一色av| 国产麻豆精品视频| 五月天丁香社区| 99久久久精品免费观看国产蜜| 黄色性视频网站| 99精品国产热久久91蜜凸| 亚洲自拍偷拍一区二区| 国产欧美视频在线观看| 337人体粉嫩噜噜噜| 国产精品久久久久天堂| 久久国产波多野结衣| 伊人色综合久久天天| 国产亚洲第一页| 欧美日韩国产麻豆| av手机天堂网| 7777女厕盗摄久久久| 亚洲成人中文字幕在线| 亚洲国产精品va在线| 国产区视频在线播放| 日韩中文字幕视频在线| 影院在线观看全集免费观看| 久久久久久久一| 免费成人直播| 91精品久久久久久久久中文字幕 | 精品久久国产97色综合| 天天操天天射天天舔| 国产视频精品一区二区三区| h视频在线观看免费| 久久久成人av| 亚洲十八**毛片| 国产乱肥老妇国产一区二| 日韩精品久久久久久久软件91| 国产一区视频观看| 日韩精品水蜜桃| 东北少妇不带套对白| 青青草原综合久久大伊人精品优势| 日韩成人av免费| 91丨九色丨蝌蚪丨老版| 91视频免费看片| 一区二区成人在线视频| 狠狠狠狠狠狠狠| 日韩欧美国产一区二区三区 | 嗯用力啊快一点好舒服小柔久久| 久久99导航| 一个色综合网| 无码人妻丰满熟妇区毛片18| 激情久久五月天| 91精品人妻一区二区三区蜜桃欧美| 国产精品不卡在线观看| 少妇一级淫片免费放中国| 欧美日韩电影在线播放| 熟妇高潮一区二区三区| 上原亚衣av一区二区三区| 国产福利电影在线播放| 成人午夜两性视频| 欧美日韩国产免费观看视频| 亚洲国产精品成人天堂| 久久国产综合精品| 亚洲日本精品视频| 黄色一区二区三区| 国产av无码专区亚洲av| 永久555www成人免费| www.youjizz.com在线| 亚洲一区二区三区在线免费观看| 中文字幕av一区二区三区人| www.av蜜桃| 国产精品一区三区| 99热6这里只有精品| 色欧美日韩亚洲| 香蕉视频免费看| 欧美二区在线播放| 国产精品一区二区三区www| 五码日韩精品一区二区三区视频| 亚洲色诱最新| 亚洲v在线观看| 亚洲精品国产成人久久av盗摄 | 亚洲一区二区三区欧美| 亚洲一区自拍| 极品白嫩丰满美女无套| 亚洲香肠在线观看| 国产女人高潮的av毛片| www日韩欧美| 久久三级毛片| 先锋影音网一区| 久久一区视频| 欧美人与性囗牲恔配| 色综合久久久网| 理论视频在线| 日本欧美中文字幕| 国产精品午夜一区二区三区| 久久无码高潮喷水| 91老师片黄在线观看| 丰满少妇xoxoxo视频| 亚洲男人天堂手机在线| 伊人色综合一区二区三区影院视频| 国产一区二区视频在线免费观看| 在线播放日韩| 国产精品久久久免费观看| 无码av中文一区二区三区桃花岛| 色婷婷激情五月| 91精品国产高清自在线看超| 欧美理论电影在线精品| 亚洲欧洲日产国码无码久久99| 久久影院午夜论| 波多野结衣网站| 日韩中文字幕在线| **精品中文字幕一区二区三区| 天堂av免费看| 成人免费毛片片v| 国产69精品久久久久久久久久| 亚洲精品电影网站| 巨茎人妖videos另类| 四虎影院一区二区三区| 极品少妇一区二区| 黄色片在线观看网站| 亚洲成人中文字幕| 亚洲伊人av| 一区二区av| 丁香啪啪综合成人亚洲小说| 欧美三级一区二区三区| 国产亚洲一区二区在线| 日韩福利影视| 国产a级片网站| 久久九九久精品国产免费直播| 一二三区中文字幕| 欧美俄罗斯乱妇| 综合亚洲色图| 成人不卡免费视频| 亚洲h动漫在线| 国产黄在线看| 99理论电影网| 日韩黄色免费电影| 日本a级片视频| 日韩精品免费综合视频在线播放| 91国内外精品自在线播放| 国产成人一二三区| 久久人人超碰精品| 国产偷拍一区二区| 欧美在线视频a| 欧美一区国产在线| 中文字幕国产综合| 欧美一激情一区二区三区| 在线观看特色大片免费视频| 日韩欧美亚洲v片| 国产98色在线|日韩| 波多野结衣一区二区在线| 久久99精品视频一区97| 国产亚洲电影| 精品1卡二卡三卡四卡老狼| 欧美色男人天堂| 岛国av在线播放| 女同性恋一区二区| 久久久久久久久久美女|