diff --git a/spring-cloud-alibaba-sentinel-zuul/src/main/java/org/springframework/cloud/alibaba/sentinel/zuul/SentinelZuulAutoConfiguration.java b/spring-cloud-alibaba-sentinel-zuul/src/main/java/org/springframework/cloud/alibaba/sentinel/zuul/SentinelZuulAutoConfiguration.java index 9fc77637..73d4cf79 100644 --- a/spring-cloud-alibaba-sentinel-zuul/src/main/java/org/springframework/cloud/alibaba/sentinel/zuul/SentinelZuulAutoConfiguration.java +++ b/spring-cloud-alibaba-sentinel-zuul/src/main/java/org/springframework/cloud/alibaba/sentinel/zuul/SentinelZuulAutoConfiguration.java @@ -27,10 +27,10 @@ import com.alibaba.csp.sentinel.adapter.zuul.properties.SentinelZuulProperties; import com.alibaba.csp.sentinel.util.StringUtil; import com.netflix.zuul.ZuulFilter; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.support.DefaultListableBeanFactory; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.cloud.alibaba.sentinel.zuul.listener.FallBackProviderListener; -import org.springframework.cloud.netflix.zuul.filters.ProxyRequestHelper; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; @@ -74,12 +74,6 @@ public class SentinelZuulAutoConfiguration { return properties; } - @Bean - @ConditionalOnMissingBean(ProxyRequestHelper.class) - public ProxyRequestHelper proxyRequestHelper() { - return new ProxyRequestHelper(); - } - @Bean @ConditionalOnMissingBean(UrlCleaner.class) public UrlCleaner urlCleaner(){ @@ -109,8 +103,8 @@ public class SentinelZuulAutoConfiguration { } @Bean - public FallBackProviderListener fallBackProviderListener() { - return new FallBackProviderListener(); + public FallBackProviderListener fallBackProviderListener(DefaultListableBeanFactory beanFactory) { + return new FallBackProviderListener(beanFactory); } } diff --git a/spring-cloud-alibaba-sentinel-zuul/src/main/java/org/springframework/cloud/alibaba/sentinel/zuul/listener/FallBackProviderListener.java b/spring-cloud-alibaba-sentinel-zuul/src/main/java/org/springframework/cloud/alibaba/sentinel/zuul/listener/FallBackProviderListener.java index d4d19bdf..d727a0e4 100644 --- a/spring-cloud-alibaba-sentinel-zuul/src/main/java/org/springframework/cloud/alibaba/sentinel/zuul/listener/FallBackProviderListener.java +++ b/spring-cloud-alibaba-sentinel-zuul/src/main/java/org/springframework/cloud/alibaba/sentinel/zuul/listener/FallBackProviderListener.java @@ -6,6 +6,8 @@ import com.alibaba.csp.sentinel.adapter.zuul.fallback.ZuulBlockFallbackProvider; import org.apache.commons.collections.MapUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.SmartInitializingSingleton; +import org.springframework.beans.factory.support.DefaultListableBeanFactory; import org.springframework.boot.context.event.ApplicationStartedEvent; import org.springframework.context.event.EventListener; @@ -15,17 +17,22 @@ import java.util.Map; /** * @author tiger */ -public class FallBackProviderListener { +public class FallBackProviderListener implements SmartInitializingSingleton { private static final Logger logger = LoggerFactory.getLogger(FallBackProviderListener.class); - @EventListener(classes = ApplicationStartedEvent.class) - public void appStartedListener(ApplicationStartedEvent event) throws Exception { - Map providerMap = event.getApplicationContext().getBeansOfType( - ZuulBlockFallbackProvider.class); + private final DefaultListableBeanFactory beanFactory; + + public FallBackProviderListener(DefaultListableBeanFactory beanFactory) { + this.beanFactory = beanFactory; + } + + @Override + public void afterSingletonsInstantiated() { + Map providerMap = beanFactory.getBeansOfType(ZuulBlockFallbackProvider.class); if (MapUtils.isNotEmpty(providerMap)) { providerMap.forEach((k, v) -> { - logger.info("[Sentinel] Register provider name: {}, instance: {}", k, v); + logger.info("[Sentinel] Register provider name:{}, instance: {}", k, v); ZuulBlockFallbackManager.registerProvider(v); }); } else { @@ -33,6 +40,4 @@ public class FallBackProviderListener { ZuulBlockFallbackManager.registerProvider(new DefaultBlockFallbackProvider()); } } - - }