簡體   English   中英

Resilience4J 重試未在 Spring boot 3 中自動配置

[英]Resilience4J Retry not auto-configured in Spring boot 3

我正在遷移到 Spring Boot 3。在 Spring Boot 2 中,Resilience4J Retry 是自動配置的,並使用以下設置開箱即用:

應用程序.yaml:

resilience4j.retry:
  instances:
    some-instance
      # retry config here

測試類:

@SpringBootTest
public class TestClass {

  @Autowired
  private RetryRegistry retryRegistry;

  @Test
  void someTest() {
    // perform test and evaluate retries using retryRegistry
  }
}

但是,在使用以下版本更新到 Spring Boot 3 時:

org.springframework.boot:spring-boot-starter:jar:3.0.0:compile
io.github.resilience4j:resilience4j-spring-boot2:jar:1.7.0:compile (derived from a Spring BoM)

自動裝配 RetryRegistry 的測試失敗,並顯示以下消息:

Unsatisfied dependency expressed through field 'retryRegistry': 
No qualifying bean of type 'io.github.resilience4j.retry.RetryRegistry' available:
expected at least 1 bean which qualifies as autowire candidate.
Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

我設法通過使用以下方法在測試中顯式導入 Resilience4j Retry 配置來修復測試:

@Import(io.github.resilience4j.retry.autoconfigure.RetryAutoConfiguration.class)

但是,我想知道為什么 Spring Boot 3 中的組件掃描機制沒有首先選擇重試配置。 有誰知道為什么Spring Boot 3在組件掃描的時候沒有拾取類嗎?

它似乎與正在使用的新 META-INF 文件而不是舊的spring.factories文件有關。 文檔中:

Spring Boot 2.7 引入了一個新的 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 文件,用於注冊自動配置,同時保持與 spring.factories 注冊的向后兼容性。 在此版本中,已刪除對在 spring.factories 中注冊自動配置的支持,以支持導入文件。

spring-cloud-dependencies-parent BoM 中使用的 Resilience4J 依賴項仍然使用spring.factories文件,而不是名為org.springframework.boot.autoconfigure.AutoConfiguration.imports的新文件。 最近在 Resilience4J( 來源)中引入了新文件。

用版本2.0.2覆蓋 Spring BoM 中的所有彈性依賴項的版本為我修復了它。 過幾天再看看Spring BoM中是否更新了新的Resilience4J版本(或者引入了resilience4j-spring-boot3)。

[編輯] 正如其他人所注意到的, resilience4j-spring-boot3已經可用。 我會開始使用它。

在 resilience4j 項目中,他們更改了 spring boot 3 的依賴項。

所以你應該去 io.github.resilience4j:resilience4j-spring-boot3:${resilience4jVersion}

org.springframework.boot:spring-boot-starter:jar:3.0.0:compile
io.github.resilience4j:resilience4j-spring-boot3:jar:2.0.0:compile 

文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM