精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美伦理影院| 88xx成人永久免费观看| 国产v日产∨综合v精品视频| 久久久噜噜噜久久中文字免| 中国极品少妇videossexhd| 一区二区三区短视频| 日本一区二区动态图| 91网免费观看| 无码人妻丰满熟妇奶水区码| 91精品啪在线观看国产81旧版| 亚洲国产91精品在线观看| 欧美日韩激情视频在线观看| 色哟哟免费在线观看| 成人午夜激情在线| 国产精品美女999| 精品在线视频观看| 日韩精品诱惑一区?区三区| 欧美tk—视频vk| 一路向西2在线观看| 丁香花电影在线观看完整版| 国产精品全国免费观看高清 | 久久久久毛片免费观看| 动漫精品一区二区| av动漫在线免费观看| aaa日本高清在线播放免费观看| 国产99精品视频| 国产欧美久久一区二区| 色屁屁影院www国产高清麻豆| 中文无码久久精品| 自拍偷拍亚洲一区| 91精品人妻一区二区三区| 99久久婷婷国产综合精品青牛牛| 日韩欧中文字幕| 日韩一级性生活片| 福利视频在线| 国产精品久线在线观看| 日韩欧美一区二区三区四区| 日本中文字幕一区二区有码在线| 国产成人在线看| 91免费在线视频| 亚洲中文字幕一区二区| 日韩电影免费在线| 欧美做爰性生交视频| 日本熟妇毛耸耸xxxxxx| 国语自产精品视频在线看8查询8| 精品国产一区久久久| 9.1片黄在线观看| 欧美色图在线播放| 亚洲午夜久久久久久久| 白白色免费视频| 中文精品一区二区| 亚洲欧美日韩精品久久| 亚洲AV无码片久久精品| 蜜桃a∨噜噜一区二区三区| 亚洲精品国产精品久久清纯直播| 亚洲黄色小说在线观看| 国产伦精品一区二区三区免费优势 | 国产性生活免费视频| 成人影院在线观看| 有坂深雪av一区二区精品| 精品国产一区二区三区在线| 日本a在线播放| 亚洲欧美日韩国产手机在线| 日韩欧美视频免费在线观看| 激情影院在线| 狠狠综合久久av一区二区小说| 日韩欧美精品在线观看视频| 三上悠亚激情av一区二区三区 | 精品国产乱码久久久久久果冻传媒| 亚洲女人被黑人巨大进入| 欧美狂猛xxxxx乱大交3| 精品视频日韩| 草民午夜欧美限制a级福利片| 欧美成人国产精品高潮| 一区二区三区国产在线| 热99精品里视频精品| 免费在线不卡av| 狠狠色丁香九九婷婷综合五月 | 国产一区毛片| 色偷偷噜噜噜亚洲男人| 欧美精品videos极品| 99re国产精品| 国产精品免费福利| 国产sm主人调教女m视频| 成人一级黄色片| 欧美一区免费视频| 免费黄色网址在线观看| 亚洲综合丝袜美腿| 成人在线观看黄| 国产精品日本一区二区不卡视频 | 激情久久av| 国产毛片av在线| 亚洲精品中文在线| 国产精品欧美激情在线观看| 色综合一区二区日本韩国亚洲 | 91在线观看免费观看| 亚洲老妇色熟女老太| 久久久久久亚洲综合影院红桃| 一区不卡字幕| 交100部在线观看| 欧美精品亚洲一区二区在线播放| 丝袜熟女一区二区三区| 成人免费a**址| 欧美—级高清免费播放| 这里只有精品6| 成人av资源在线观看| 亚洲人成网站在线观看播放| 多野结衣av一区| 91.成人天堂一区| 中文字幕在线1| 一区在线免费观看| 成人黄色影片在线| 国产女人在线观看| 精品久久久久久久久久久久久| 亚洲一级片av| jizzjizz欧美69巨大| 国内偷自视频区视频综合| 91精品国产综合久| 久久婷婷成人综合色| 国产高清www| 成人豆花视频| 色婷婷av一区二区三区久久| 欧美一级片免费在线观看| 国产精一区二区三区| 亚洲va韩国va欧美va精四季| 小h片在线观看| 欧美大黄免费观看| 国产免费一区二区三区四区| 久久一日本道色综合久久| 国产一区不卡在线观看| 尤物视频在线看| 欧美精品在线视频| 日本美女bbw| 日本不卡一区二区三区高清视频| 久久影视中文粉嫩av| 成人黄色动漫| 亚洲高清福利视频| 久久久精品视频免费| 国产成人精品aa毛片| 在线观看av的网址| 国产亚洲高清一区| 美女视频黄免费的亚洲男人天堂| 一级特黄aaaaaa大片| 国产精品视频线看| 能在线观看的av网站| 亚洲电影男人天堂| 国产97在线|日韩| 国产在线视频网站| 91高清在线观看| 精品人伦一区二区三电影| 久久久久国产精品午夜一区| 日本精品一区二区三区视频| 久久野战av| www国产精品com| 国产又粗又猛又爽| 一区二区三区中文字幕电影| 国内av免费观看| 欧美日本亚洲韩国国产| 国产精品一区二区在线观看| 久久青草伊人| 亚洲免费小视频| 做爰视频毛片视频| 国产精品国产a| 欧美xxxx黑人| 一本色道久久综合亚洲精品不| 久久精品99久久| 欧美与亚洲与日本直播| 日韩亚洲一区二区| 精品人妻一区二区三区蜜桃| 午夜婷婷国产麻豆精品| 受虐m奴xxx在线观看| 免费不卡在线观看| 一二三四中文字幕| 看全色黄大色大片免费久久久| 茄子视频成人在线| 国产原创视频在线观看| 亚洲第一精品夜夜躁人人躁| 日韩中文字幕在线观看视频| 国产精品萝li| 日本不卡视频一区| 日韩专区一卡二卡| 特级西西444| 首页亚洲中字| 亚洲xxxxx电影| 九九色在线视频| 亚洲视频日韩精品| 99热这里只有精品在线观看| 疯狂做受xxxx高潮欧美日本| 制服丨自拍丨欧美丨动漫丨| 国产成人一级电影| 激情综合网俺也去| 国产综合久久| 日韩高清专区| 精品网站aaa| 国产欧美在线看| 三妻四妾完整版在线观看电视剧| 色老头一区二区三区| 污视频在线免费观看| 欧美日韩国产在线播放网站| 日韩污视频在线观看| 国产精品超碰97尤物18| 亚洲精品乱码久久久久久不卡| 久久精品国产99久久6| 欧美视频免费看欧美视频| 日韩欧美一区二区三区在线视频| 国产精选在线观看91| 日韩专区视频| 日韩av三级在线观看| 青草视频在线免费直播| 亚洲欧美日韩精品久久| 人妻偷人精品一区二区三区| 69久久夜色精品国产69蝌蚪网| 欧美激情黑白配| 亚洲午夜在线观看视频在线| 波兰性xxxxx极品hd| 久久―日本道色综合久久| 少妇献身老头系列| 精品一二线国产| av免费网站观看| 一本久道久久久| 日韩人妻无码精品久久久不卡| 91九色精品国产一区二区| 天堂精品视频| 久久99国产精一区二区三区| 成人看片视频| 精品999日本久久久影院| 国产精品极品尤物在线观看| 成人动漫一区| 欧美怡春院一区二区三区| 精灵使的剑舞无删减版在线观看| 麻豆国产精品va在线观看不卡| 午夜在线观看视频| 一区二区三区天堂av| 毛片在线免费| 亚洲欧美精品一区| 五月婷婷免费视频| 亚洲国产一区自拍| 蜜桃av中文字幕| 精品成a人在线观看| www.激情五月.com| 欧美成人女星排行榜| 国产极品999| 日韩女同互慰一区二区| 99久久久久成人国产免费| 7777精品伊人久久久大香线蕉超级流畅| 国产美女www爽爽爽| 欧美午夜寂寞影院| 中文字幕av网站| 欧美日韩极品在线观看一区| 一区二区精品视频在线观看| 欧美日韩国产影片| 亚洲系列第一页| 4hu四虎永久在线影院成人| 国产极品999| 欧美成人激情免费网| 黄色成人一级片| 亚洲精品福利在线观看| 亚洲三级中文字幕| 亚洲区在线播放| 午夜视频在线观看网站| 久久精品国产亚洲7777| aaa大片在线观看| 97视频色精品| 日韩高清在线| 51成人做爰www免费看网站| 亚洲天堂中文字幕在线观看| 精品国产一区二区三区四区vr| 免费成人网www| 亚洲女人毛片| 中文字幕一区二区三区欧美日韩| 青青在线视频免费观看| 亚洲中字在线| 91极品视频在线观看| 国产一区二区调教| 国产精品福利导航| 国产午夜一区二区三区| 欧美色视频一区二区三区在线观看| 亚洲日本护士毛茸茸| 日韩精品在线不卡| 欧美在线综合视频| 国产成人精品一区二三区四区五区 | 国产亚洲第一伦理第一区| 中文字幕中文字幕在线中一区高清| 国内精品久久久久久久影视蜜臀 | 性感美女一区二区在线观看| 国产日韩精品在线观看| 成人影院中文字幕| 日韩在线国产| 欧美视频导航| 久久久久国产精品熟女影院 | 一出一进一爽一粗一大视频| 国产欧美一区二区精品性色| 久久久久99精品成人片毛片| 日韩欧美一区二区三区久久| 国产免费无遮挡| 亚洲欧美日韩爽爽影院| 大片免费在线观看| 国产成人一区二| 99亚洲乱人伦aⅴ精品| 少妇精品久久久久久久久久| 亚洲伦伦在线| 日本中文字幕在线不卡| 国产欧美日韩精品一区| 日韩精品一区三区| 欧美顶级少妇做爰| 国产美女性感在线观看懂色av| 九九热这里只有在线精品视| 国产成人免费9x9x人网站视频 | 国产精品美女呻吟| 青青草原在线亚洲| 特级黄色录像片| 日本不卡视频一二三区| 自拍视频一区二区| 亚洲最新在线观看| 91福利在线观看视频| 亚洲毛片一区二区| 538在线观看| 5566中文字幕一区二区| 欧美黄色大片在线观看| 无码无遮挡又大又爽又黄的视频| 99视频有精品| 欧美国产精品一二三| 在线综合视频播放| 欧美性videos| 国产乱肥老妇国产一区二| 国产99久久精品一区二区300| 黄页网站在线观看视频| 国产成人亚洲精品狼色在线| 男女做暖暖视频| 欧美区一区二区三区| √新版天堂资源在线资源| 日本三级韩国三级久久| 日韩有码一区| 国产午夜大地久久| 成人18视频在线播放| 久久伊人成人网| 欧美成人精品3d动漫h| 日韩精品卡一| 91在线视频精品| 欧美在线高清| 久久精品国产99久久99久久久| 国产精品人妖ts系列视频| 青青艹在线观看| 国产亚洲欧美aaaa| 欧美va在线观看| 亚洲一卡二卡区| 精品一区二区三区不卡| 五月婷婷综合激情网| 欧美日韩国产bt| 含羞草www国产在线视频| 亚洲在线观看视频| 欧美精品大片| 日韩av无码一区二区三区不卡| 亚洲va中文字幕| 天堂在线一二区| 国产精品白嫩初高中害羞小美女| 蜜臀91精品国产高清在线观看| 白嫩少妇丰满一区二区| 国产精品久久久久一区二区三区 | 成人黄色av片| 26uuu久久综合| 天天操天天干天天摸| 色av中文字幕一区| 日本99精品| 久久综合九色综合88i| 2023国产精品视频| 国产精品无码一区| 久久躁狠狠躁夜夜爽| 91精品久久久久久综合五月天| 99在线精品免费视频| 久久久久国产一区二区三区四区| 最近中文字幕av| 欧美精品在线极品| 久久男人av| 亚洲欧美久久久久| 一区二区三区在线看| 日韩中文字幕免费观看| 国产精品av在线| 亚洲国产精品久久久久蝴蝶传媒| 日本人妻一区二区三区| 日韩欧美精品中文字幕| 国产精品实拍| 久久精品欧美| 老司机精品视频在线| 国产午夜视频在线| 亚洲人成电影在线播放| 欧美影院精品| 亚洲成熟丰满熟妇高潮xxxxx| 亚洲特黄一级片| 麻豆导航在线观看| 91aaaa| 日韩电影网1区2区| 国产对白videos麻豆高潮| 亚洲最新av网址| 精品三级av| 91亚洲一区二区| 日本精品一区二区三区高清| 在线欧美三级| 亚洲狠狠婷婷综合久久久| 成人小视频在线观看|