Skip to content

Commit 6d1e70a

Browse files
committed
fix(springboot openfeign): fix IT failed for tests that have two dapr client bean autowired
Job SDK ITs have a daprPreviewClient bean defined, as SpringBoot bean search will first get beans that impl the interface and get all beans that matches the bean's class, when openfeign autowire DaprClient, there is a conflict between daprClient and daprPreviewClient. Change the AutoConfiguration behavior to make a more strict rule for making AutoConfiguration run Signed-off-by: lony2003 <[email protected]>
1 parent a330ef2 commit 6d1e70a

File tree

4 files changed

+15
-17
lines changed

4 files changed

+15
-17
lines changed

dapr-spring/dapr-spring-openfeign/src/main/java/io/dapr/spring/openfeign/autoconfigure/DaprFeignClientAutoConfiguration.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,13 @@
2222
import org.springframework.boot.context.properties.EnableConfigurationProperties;
2323
import org.springframework.cloud.openfeign.FeignAutoConfiguration;
2424
import org.springframework.context.annotation.Bean;
25+
import org.springframework.context.annotation.Conditional;
2526
import org.springframework.context.annotation.Configuration;
2627
import org.springframework.context.annotation.Import;
2728

2829
@Configuration(proxyBeanMethods = false)
2930
@EnableConfigurationProperties(DaprFeignClientProperties.class)
30-
@ConditionalOnProperty(name = "dapr.feign.enabled", matchIfMissing = true)
31+
@Conditional(FeignClientAnnoationEnabledCondition.class)
3132
@ConditionalOnClass(FeignAutoConfiguration.class)
3233
@Import(DaprClientTargeterBeanPostProcessor.class)
3334
public class DaprFeignClientAutoConfiguration {

dapr-spring/dapr-spring-openfeign/src/main/java/io/dapr/spring/openfeign/autoconfigure/DaprFeignClientProperties.java

-9
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,9 @@ public class DaprFeignClientProperties {
2121

2222
public static final String PROPERTY_PREFIX = "dapr.feign";
2323

24-
private boolean enabled = true;
2524
private Integer timeout = 2000;
2625
private Integer retries = 3;
2726

28-
public boolean isEnabled() {
29-
return enabled;
30-
}
31-
32-
public void setEnabled(boolean enabled) {
33-
this.enabled = enabled;
34-
}
35-
3627
public Integer getTimeout() {
3728
return timeout;
3829
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package io.dapr.spring.openfeign.autoconfigure;
2+
3+
import org.springframework.cloud.openfeign.EnableFeignClients;
4+
import org.springframework.context.annotation.Condition;
5+
import org.springframework.context.annotation.ConditionContext;
6+
import org.springframework.core.type.AnnotatedTypeMetadata;
7+
8+
public class FeignClientAnnoationEnabledCondition implements Condition {
9+
@Override
10+
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
11+
return context.getBeanFactory().getBeanNamesForAnnotation(EnableFeignClients.class).length > 0;
12+
}
13+
}

dapr-spring/dapr-spring-openfeign/src/main/resources/META-INF/additional-spring-configuration-metadata.json

-7
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,5 @@
11
{
22
"properties": [
3-
{
4-
"name": "dapr.feign.enabled",
5-
"type": "java.lang.Boolean",
6-
"defaultValue": true,
7-
"sourceType": "io.dapr.spring.openfeign.autoconfigure.DaprFeignClientProperties",
8-
"description": "enable dapr openfeign or not."
9-
},
103
{
114
"name": "dapr.feign.timeout",
125
"type": "java.lang.Integer",

0 commit comments

Comments
 (0)