1
0
mirror of https://gitee.com/mirrors/Spring-Cloud-Alibaba.git synced 2021-06-26 13:25:11 +08:00

change listener to use SmartInitializingSingleton

This commit is contained in:
tiger 2019-02-22 18:09:35 +08:00
parent ac25e4a9dc
commit ffb71e3eaf
2 changed files with 16 additions and 17 deletions

View File

@ -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);
}
}

View File

@ -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<String, ZuulBlockFallbackProvider> providerMap = event.getApplicationContext().getBeansOfType(
ZuulBlockFallbackProvider.class);
private final DefaultListableBeanFactory beanFactory;
public FallBackProviderListener(DefaultListableBeanFactory beanFactory) {
this.beanFactory = beanFactory;
}
@Override
public void afterSingletonsInstantiated() {
Map<String, ZuulBlockFallbackProvider> 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());
}
}
}