diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelFeign.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelFeign.java
index b9d36ebf9..d867f9a59 100644
--- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelFeign.java
+++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelFeign.java
@@ -27,6 +27,7 @@ import feign.InvocationHandlerFactory;
import feign.Target;
import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.cloud.openfeign.FeignClientFactoryBean;
@@ -41,6 +42,7 @@ import org.springframework.util.StringUtils;
* {@link Feign.Builder}.
*
* @author Jim
+ * @author 黄学敏(huangxuemin)
*/
public final class SentinelFeign {
@@ -126,6 +128,16 @@ public final class SentinelFeign {
"No %s instance of type %s found for feign client %s",
type, fallbackType, name));
}
+ // when fallback is a FactoryBean, should determine the type of instance
+ if (fallbackInstance instanceof FactoryBean>) {
+ try {
+ fallbackInstance = ((FactoryBean