Skip to content

Commit c679135

Browse files
lespinsidegRobWin
authored andcommitted
Issue ReactiveX#309: Added fallback functionality to spring annotations (ReactiveX#377)
1 parent a6da58b commit c679135

File tree

63 files changed

+1759
-77
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+1759
-77
lines changed

resilience4j-annotations/src/main/java/io/github/resilience4j/bulkhead/annotation/Bulkhead.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,11 @@
1212
* @return the name of the bulkhead
1313
*/
1414
String name();
15+
16+
/**
17+
* recovery method name.
18+
*
19+
* @return recovery method name.
20+
*/
21+
String recovery() default "";
1522
}

resilience4j-annotations/src/main/java/io/github/resilience4j/circuitbreaker/annotation/CircuitBreaker.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,11 @@
3939
* @return the name of the circuit breaker
4040
*/
4141
String name();
42+
43+
/**
44+
* recovery method name.
45+
*
46+
* @return recovery method name.
47+
*/
48+
String recovery() default "";
4249
}

resilience4j-annotations/src/main/java/io/github/resilience4j/ratelimiter/annotation/RateLimiter.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,11 @@
3838
* @return the name of the limiter
3939
*/
4040
String name();
41+
42+
/**
43+
* recovery method name.
44+
*
45+
* @return recovery method name.
46+
*/
47+
String recovery() default "";
4148
}

resilience4j-annotations/src/main/java/io/github/resilience4j/retry/annotation/AsyncRetry.java

Whitespace-only changes.

resilience4j-annotations/src/main/java/io/github/resilience4j/retry/annotation/Retry.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,11 @@
3838
* @return the name of the sync retry.
3939
*/
4040
String name();
41+
42+
/**
43+
* recovery method name.
44+
*
45+
* @return recovery method name.
46+
*/
47+
String recovery() default "";
4148
}

resilience4j-spring-boot-common/src/main/java/io/github/resilience4j/bulkhead/autoconfigure/AbstractBulkheadConfigurationOnMissingBean.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,16 @@
1919
import io.github.resilience4j.bulkhead.configure.*;
2020
import io.github.resilience4j.bulkhead.event.BulkheadEvent;
2121
import io.github.resilience4j.consumer.EventConsumerRegistry;
22+
import io.github.resilience4j.recovery.RecoveryDecorators;
23+
import io.github.resilience4j.recovery.autoconfigure.RecoveryConfigurationOnMissingBean;
2224
import io.github.resilience4j.utils.ReactorOnClasspathCondition;
2325
import io.github.resilience4j.utils.RxJava2OnClasspathCondition;
2426
import org.springframework.beans.factory.annotation.Autowired;
2527
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
2628
import org.springframework.context.annotation.Bean;
2729
import org.springframework.context.annotation.Conditional;
2830
import org.springframework.context.annotation.Configuration;
31+
import org.springframework.context.annotation.Import;
2932

3033
import java.util.List;
3134

@@ -34,6 +37,7 @@
3437
* Configuration} for resilience4j-bulkhead.
3538
*/
3639
@Configuration
40+
@Import(RecoveryConfigurationOnMissingBean.class)
3741
public abstract class AbstractBulkheadConfigurationOnMissingBean {
3842

3943
protected final BulkheadConfiguration bulkheadConfiguration;
@@ -52,8 +56,9 @@ public BulkheadRegistry bulkheadRegistry(BulkheadConfigurationProperties bulkhea
5256
@Bean
5357
@ConditionalOnMissingBean
5458
public BulkheadAspect bulkheadAspect(BulkheadConfigurationProperties bulkheadConfigurationProperties,
55-
BulkheadRegistry bulkheadRegistry, @Autowired(required = false) List<BulkheadAspectExt> bulkHeadAspectExtList) {
56-
return bulkheadConfiguration.bulkheadAspect(bulkheadConfigurationProperties, bulkheadRegistry, bulkHeadAspectExtList);
59+
BulkheadRegistry bulkheadRegistry, @Autowired(required = false) List<BulkheadAspectExt> bulkHeadAspectExtList,
60+
RecoveryDecorators recoveryDecorators) {
61+
return bulkheadConfiguration.bulkheadAspect(bulkheadConfigurationProperties, bulkheadRegistry, bulkHeadAspectExtList, recoveryDecorators);
5762
}
5863

5964
@Bean

resilience4j-spring-boot-common/src/main/java/io/github/resilience4j/circuitbreaker/autoconfigure/AbstractCircuitBreakerConfigurationOnMissingBean.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,21 @@
2020
import io.github.resilience4j.circuitbreaker.configure.*;
2121
import io.github.resilience4j.circuitbreaker.event.CircuitBreakerEvent;
2222
import io.github.resilience4j.consumer.EventConsumerRegistry;
23+
import io.github.resilience4j.recovery.RecoveryDecorators;
24+
import io.github.resilience4j.recovery.autoconfigure.RecoveryConfigurationOnMissingBean;
2325
import io.github.resilience4j.utils.ReactorOnClasspathCondition;
2426
import io.github.resilience4j.utils.RxJava2OnClasspathCondition;
2527
import org.springframework.beans.factory.annotation.Autowired;
2628
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
2729
import org.springframework.context.annotation.Bean;
2830
import org.springframework.context.annotation.Conditional;
2931
import org.springframework.context.annotation.Configuration;
32+
import org.springframework.context.annotation.Import;
3033

3134
import java.util.List;
3235

3336
@Configuration
37+
@Import(RecoveryConfigurationOnMissingBean.class)
3438
public abstract class AbstractCircuitBreakerConfigurationOnMissingBean {
3539

3640
protected final CircuitBreakerConfiguration circuitBreakerConfiguration;
@@ -64,8 +68,9 @@ public CircuitBreakerRegistry circuitBreakerRegistry(EventConsumerRegistry<Circu
6468
@Bean
6569
@ConditionalOnMissingBean
6670
public CircuitBreakerAspect circuitBreakerAspect(CircuitBreakerRegistry circuitBreakerRegistry,
67-
@Autowired(required = false) List<CircuitBreakerAspectExt> circuitBreakerAspectExtList) {
68-
return circuitBreakerConfiguration.circuitBreakerAspect(circuitBreakerRegistry, circuitBreakerAspectExtList);
71+
@Autowired(required = false) List<CircuitBreakerAspectExt> circuitBreakerAspectExtList,
72+
RecoveryDecorators recoveryDecorators) {
73+
return circuitBreakerConfiguration.circuitBreakerAspect(circuitBreakerRegistry, circuitBreakerAspectExtList, recoveryDecorators);
6974
}
7075

7176
@Bean

resilience4j-spring-boot-common/src/main/java/io/github/resilience4j/ratelimiter/autoconfigure/AbstractRateLimiterConfigurationOnMissingBean.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,21 @@
1919
import io.github.resilience4j.ratelimiter.RateLimiterRegistry;
2020
import io.github.resilience4j.ratelimiter.configure.*;
2121
import io.github.resilience4j.ratelimiter.event.RateLimiterEvent;
22+
import io.github.resilience4j.recovery.RecoveryDecorators;
23+
import io.github.resilience4j.recovery.autoconfigure.RecoveryConfigurationOnMissingBean;
2224
import io.github.resilience4j.utils.ReactorOnClasspathCondition;
2325
import io.github.resilience4j.utils.RxJava2OnClasspathCondition;
2426
import org.springframework.beans.factory.annotation.Autowired;
2527
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
2628
import org.springframework.context.annotation.Bean;
2729
import org.springframework.context.annotation.Conditional;
2830
import org.springframework.context.annotation.Configuration;
31+
import org.springframework.context.annotation.Import;
2932

3033
import java.util.List;
3134

3235
@Configuration
36+
@Import(RecoveryConfigurationOnMissingBean.class)
3337
public abstract class AbstractRateLimiterConfigurationOnMissingBean {
3438
protected final RateLimiterConfiguration rateLimiterConfiguration;
3539

@@ -46,8 +50,8 @@ public RateLimiterRegistry rateLimiterRegistry(RateLimiterConfigurationPropertie
4650

4751
@Bean
4852
@ConditionalOnMissingBean
49-
public RateLimiterAspect rateLimiterAspect(RateLimiterConfigurationProperties rateLimiterProperties, RateLimiterRegistry rateLimiterRegistry, @Autowired(required = false) List<RateLimiterAspectExt> rateLimiterAspectExtList) {
50-
return rateLimiterConfiguration.rateLimiterAspect(rateLimiterProperties, rateLimiterRegistry, rateLimiterAspectExtList);
53+
public RateLimiterAspect rateLimiterAspect(RateLimiterConfigurationProperties rateLimiterProperties, RateLimiterRegistry rateLimiterRegistry, @Autowired(required = false) List<RateLimiterAspectExt> rateLimiterAspectExtList, RecoveryDecorators recoveryDecorators) {
54+
return rateLimiterConfiguration.rateLimiterAspect(rateLimiterProperties, rateLimiterRegistry, rateLimiterAspectExtList, recoveryDecorators);
5155
}
5256

5357
@Bean
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
/*
2+
* Copyright 2019 Kyuhyen Hwang
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package io.github.resilience4j.recovery.autoconfigure;
17+
18+
import io.github.resilience4j.recovery.RecoveryDecorator;
19+
import io.github.resilience4j.recovery.RecoveryDecorators;
20+
import io.github.resilience4j.recovery.configure.RecoveryConfiguration;
21+
import io.github.resilience4j.utils.ReactorOnClasspathCondition;
22+
import io.github.resilience4j.utils.RxJava2OnClasspathCondition;
23+
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
24+
import org.springframework.context.annotation.Bean;
25+
import org.springframework.context.annotation.Conditional;
26+
import org.springframework.context.annotation.Configuration;
27+
28+
import java.util.List;
29+
30+
/**
31+
* {@link Configuration} for {@link RecoveryDecorators}.
32+
*/
33+
@Configuration
34+
public class RecoveryConfigurationOnMissingBean {
35+
private final RecoveryConfiguration recoveryConfiguration;
36+
37+
public RecoveryConfigurationOnMissingBean() {
38+
this.recoveryConfiguration = new RecoveryConfiguration();
39+
}
40+
41+
@Bean
42+
@ConditionalOnMissingBean
43+
public RecoveryDecorators recoveryDecorators(List<RecoveryDecorator> recoveryDecorator) {
44+
return recoveryConfiguration.recoveryDecorators(recoveryDecorator);
45+
}
46+
47+
@Bean
48+
@Conditional(value = {RxJava2OnClasspathCondition.class})
49+
@ConditionalOnMissingBean
50+
public RecoveryDecorator rxJava2RecoveryDecorator() {
51+
return recoveryConfiguration.rxJava2RecoveryDecorator();
52+
}
53+
54+
@Bean
55+
@Conditional(value = {ReactorOnClasspathCondition.class})
56+
@ConditionalOnMissingBean
57+
public RecoveryDecorator reactorRecoveryDecorator() {
58+
return recoveryConfiguration.reactorRecoveryDecorator();
59+
}
60+
61+
@Bean
62+
@ConditionalOnMissingBean
63+
public RecoveryDecorator completionStageRecoveryDecorator() {
64+
return recoveryConfiguration.completionStageRecoveryDecorator();
65+
}
66+
}

resilience4j-spring-boot-common/src/main/java/io/github/resilience4j/retry/autoconfigure/AbstractRetryConfigurationOnMissingBean.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
package io.github.resilience4j.retry.autoconfigure;
1717

1818
import io.github.resilience4j.consumer.EventConsumerRegistry;
19+
import io.github.resilience4j.recovery.RecoveryDecorators;
20+
import io.github.resilience4j.recovery.autoconfigure.RecoveryConfigurationOnMissingBean;
1921
import io.github.resilience4j.retry.RetryRegistry;
2022
import io.github.resilience4j.retry.configure.*;
2123
import io.github.resilience4j.retry.event.RetryEvent;
@@ -26,6 +28,7 @@
2628
import org.springframework.context.annotation.Bean;
2729
import org.springframework.context.annotation.Conditional;
2830
import org.springframework.context.annotation.Configuration;
31+
import org.springframework.context.annotation.Import;
2932

3033
import java.util.List;
3134

@@ -34,6 +37,7 @@
3437
* Configuration} for resilience4j-retry.
3538
*/
3639
@Configuration
40+
@Import(RecoveryConfigurationOnMissingBean.class)
3741
public abstract class AbstractRetryConfigurationOnMissingBean {
3842

3943
protected final RetryConfiguration retryConfiguration;
@@ -61,8 +65,9 @@ public RetryRegistry retryRegistry(RetryConfigurationProperties retryConfigurati
6165
@Bean
6266
@ConditionalOnMissingBean
6367
public RetryAspect retryAspect(RetryConfigurationProperties retryConfigurationProperties,
64-
RetryRegistry retryRegistry, @Autowired(required = false) List<RetryAspectExt> retryAspectExtList) {
65-
return retryConfiguration.retryAspect(retryConfigurationProperties, retryRegistry, retryAspectExtList);
68+
RetryRegistry retryRegistry, @Autowired(required = false) List<RetryAspectExt> retryAspectExtList,
69+
RecoveryDecorators recoveryDecorators) {
70+
return retryConfiguration.retryAspect(retryConfigurationProperties, retryRegistry, retryAspectExtList, recoveryDecorators);
6671
}
6772

6873
@Bean

resilience4j-spring-boot-common/src/test/java/io/github/resilience4j/SpringBootCommonTest.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
import io.github.resilience4j.consumer.DefaultEventConsumerRegistry;
2424
import io.github.resilience4j.ratelimiter.RateLimiterRegistry;
2525
import io.github.resilience4j.ratelimiter.configure.RateLimiterConfigurationProperties;
26+
import io.github.resilience4j.recovery.CompletionStageRecoveryDecorator;
27+
import io.github.resilience4j.recovery.RecoveryDecorators;
2628
import io.github.resilience4j.retry.RetryRegistry;
2729
import io.github.resilience4j.retry.configure.RetryConfigurationProperties;
2830
import io.github.resilience4j.bulkhead.autoconfigure.AbstractBulkheadConfigurationOnMissingBean;
@@ -31,6 +33,7 @@
3133
import io.github.resilience4j.retry.autoconfigure.AbstractRetryConfigurationOnMissingBean;
3234
import org.junit.Test;
3335

36+
import java.util.Arrays;
3437
import java.util.Collections;
3538

3639
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
@@ -46,7 +49,7 @@ public void testBulkHeadCommonConfig() {
4649
assertThat(bulkheadConfigurationOnMissingBean.bulkheadRegistry(new BulkheadConfigurationProperties(), new DefaultEventConsumerRegistry<>())).isNotNull();
4750
assertThat(bulkheadConfigurationOnMissingBean.reactorBulkHeadAspectExt()).isNotNull();
4851
assertThat(bulkheadConfigurationOnMissingBean.rxJava2BulkHeadAspectExt()).isNotNull();
49-
assertThat(bulkheadConfigurationOnMissingBean.bulkheadAspect(new BulkheadConfigurationProperties(), BulkheadRegistry.ofDefaults(), Collections.emptyList()));
52+
assertThat(bulkheadConfigurationOnMissingBean.bulkheadAspect(new BulkheadConfigurationProperties(), BulkheadRegistry.ofDefaults(), Collections.emptyList(), new RecoveryDecorators(Arrays.asList(new CompletionStageRecoveryDecorator()))));
5053
}
5154

5255
@Test
@@ -55,7 +58,7 @@ public void testCircuitBreakerCommonConfig() {
5558
assertThat(circuitBreakerConfig.reactorCircuitBreakerAspect()).isNotNull();
5659
assertThat(circuitBreakerConfig.rxJava2CircuitBreakerAspect()).isNotNull();
5760
assertThat(circuitBreakerConfig.circuitBreakerRegistry(new DefaultEventConsumerRegistry<>())).isNotNull();
58-
assertThat(circuitBreakerConfig.circuitBreakerAspect(CircuitBreakerRegistry.ofDefaults(), Collections.emptyList()));
61+
assertThat(circuitBreakerConfig.circuitBreakerAspect(CircuitBreakerRegistry.ofDefaults(), Collections.emptyList(), new RecoveryDecorators(Arrays.asList(new CompletionStageRecoveryDecorator()))));
5962
}
6063

6164
@Test
@@ -64,7 +67,7 @@ public void testRetryCommonConfig() {
6467
assertThat(retryConfigurationOnMissingBean.reactorRetryAspectExt()).isNotNull();
6568
assertThat(retryConfigurationOnMissingBean.rxJava2RetryAspectExt()).isNotNull();
6669
assertThat(retryConfigurationOnMissingBean.retryRegistry(new RetryConfigurationProperties(), new DefaultEventConsumerRegistry<>())).isNotNull();
67-
assertThat(retryConfigurationOnMissingBean.retryAspect(new RetryConfigurationProperties(), RetryRegistry.ofDefaults(), Collections.emptyList()));
70+
assertThat(retryConfigurationOnMissingBean.retryAspect(new RetryConfigurationProperties(), RetryRegistry.ofDefaults(), Collections.emptyList(), new RecoveryDecorators(Arrays.asList(new CompletionStageRecoveryDecorator()))));
6871
}
6972

7073
@Test
@@ -73,7 +76,7 @@ public void testRateLimiterCommonConfig() {
7376
assertThat(rateLimiterConfigurationOnMissingBean.reactorRateLimiterAspectExt()).isNotNull();
7477
assertThat(rateLimiterConfigurationOnMissingBean.rxJava2RateLimterAspectExt()).isNotNull();
7578
assertThat(rateLimiterConfigurationOnMissingBean.rateLimiterRegistry(new RateLimiterConfigurationProperties(), new DefaultEventConsumerRegistry<>())).isNotNull();
76-
assertThat(rateLimiterConfigurationOnMissingBean.rateLimiterAspect(new RateLimiterConfigurationProperties(), RateLimiterRegistry.ofDefaults(), Collections.emptyList()));
79+
assertThat(rateLimiterConfigurationOnMissingBean.rateLimiterAspect(new RateLimiterConfigurationProperties(), RateLimiterRegistry.ofDefaults(), Collections.emptyList(), new RecoveryDecorators(Arrays.asList(new CompletionStageRecoveryDecorator()))));
7780
}
7881

7982

resilience4j-spring-boot/src/test/java/io/github/resilience4j/bulkhead/autoconfigure/BulkheadConfigurationOnMissingBeanTest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import java.lang.reflect.Method;
2323
import java.util.List;
2424

25+
import io.github.resilience4j.recovery.RecoveryDecorators;
2526
import org.junit.Test;
2627
import org.junit.runner.RunWith;
2728
import org.springframework.beans.factory.annotation.Autowired;
@@ -104,8 +105,9 @@ public BulkheadRegistry bulkheadRegistry() {
104105

105106
@Bean
106107
public BulkheadAspect bulkheadAspect(BulkheadRegistry bulkheadRegistry,
107-
@Autowired(required = false) List<BulkheadAspectExt> bulkheadAspectExts) {
108-
bulkheadAspect = new BulkheadAspect(new BulkheadProperties(), bulkheadRegistry, bulkheadAspectExts);
108+
@Autowired(required = false) List<BulkheadAspectExt> bulkheadAspectExts,
109+
RecoveryDecorators recoveryDecorators) {
110+
bulkheadAspect = new BulkheadAspect(new BulkheadProperties(), bulkheadRegistry, bulkheadAspectExts, recoveryDecorators);
109111
return bulkheadAspect;
110112
}
111113

resilience4j-spring-boot/src/test/java/io/github/resilience4j/circuitbreaker/autoconfigure/CircuitBreakerConfigurationOnMissingBeanTest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import java.lang.reflect.Method;
2323
import java.util.List;
2424

25+
import io.github.resilience4j.recovery.RecoveryDecorators;
2526
import org.junit.Test;
2627
import org.junit.runner.RunWith;
2728
import org.springframework.beans.factory.annotation.Autowired;
@@ -104,8 +105,9 @@ public CircuitBreakerRegistry circuitBreakerRegistry() {
104105

105106
@Bean
106107
public CircuitBreakerAspect circuitBreakerAspect(CircuitBreakerRegistry circuitBreakerRegistry,
107-
@Autowired(required = false) List<CircuitBreakerAspectExt> circuitBreakerAspectExtList) {
108-
circuitBreakerAspect = new CircuitBreakerAspect(new CircuitBreakerProperties(), circuitBreakerRegistry, circuitBreakerAspectExtList);
108+
@Autowired(required = false) List<CircuitBreakerAspectExt> circuitBreakerAspectExtList,
109+
RecoveryDecorators recoveryDecorators) {
110+
circuitBreakerAspect = new CircuitBreakerAspect(new CircuitBreakerProperties(), circuitBreakerRegistry, circuitBreakerAspectExtList, recoveryDecorators);
109111
return circuitBreakerAspect;
110112
}
111113

resilience4j-spring-boot/src/test/java/io/github/resilience4j/ratelimiter/autoconfigure/RateLimiterConfigurationOnMissingBeanTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import java.lang.reflect.Method;
2323
import java.util.List;
2424

25+
import io.github.resilience4j.recovery.RecoveryDecorators;
2526
import org.junit.Test;
2627
import org.junit.runner.RunWith;
2728
import org.springframework.beans.factory.annotation.Autowired;
@@ -105,8 +106,8 @@ public RateLimiterRegistry rateLimiterRegistry() {
105106
}
106107

107108
@Bean
108-
public RateLimiterAspect rateLimiterAspect(RateLimiterRegistry rateLimiterRegistry, @Autowired(required = false) List<RateLimiterAspectExt> rateLimiterAspectExtList) {
109-
rateLimiterAspect = new RateLimiterAspect(rateLimiterRegistry, new RateLimiterConfigurationProperties(), rateLimiterAspectExtList);
109+
public RateLimiterAspect rateLimiterAspect(RateLimiterRegistry rateLimiterRegistry, @Autowired(required = false) List<RateLimiterAspectExt> rateLimiterAspectExtList, RecoveryDecorators recoveryDecorators) {
110+
rateLimiterAspect = new RateLimiterAspect(rateLimiterRegistry, new RateLimiterConfigurationProperties(), rateLimiterAspectExtList, recoveryDecorators);
110111
return rateLimiterAspect;
111112
}
112113

resilience4j-spring-boot/src/test/java/io/github/resilience4j/retry/autoconfigure/RetryConfigurationOnMissingBeanTest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import java.lang.reflect.Method;
2323
import java.util.List;
2424

25+
import io.github.resilience4j.recovery.RecoveryDecorators;
2526
import org.junit.Test;
2627
import org.junit.runner.RunWith;
2728
import org.springframework.beans.factory.annotation.Autowired;
@@ -104,8 +105,9 @@ public RetryRegistry retryRegistry() {
104105

105106
@Bean
106107
public RetryAspect retryAspect(RetryRegistry retryRegistry,
107-
@Autowired(required = false) List<RetryAspectExt> retryAspectExts) {
108-
this.retryAspect = new RetryAspect(new RetryProperties(), retryRegistry, retryAspectExts);
108+
@Autowired(required = false) List<RetryAspectExt> retryAspectExts,
109+
RecoveryDecorators recoveryDecorators) {
110+
this.retryAspect = new RetryAspect(new RetryProperties(), retryRegistry, retryAspectExts, recoveryDecorators);
109111
return retryAspect;
110112
}
111113

0 commit comments

Comments
 (0)