fix g sentinel-feign contextid bug

pull/838/head
xiejiashuai 6 years ago
parent 8832644850
commit 85617c6757

@ -26,6 +26,7 @@ import org.springframework.cloud.openfeign.FeignContext;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware; import org.springframework.context.ApplicationContextAware;
import org.springframework.util.ReflectionUtils; import org.springframework.util.ReflectionUtils;
import org.springframework.util.StringUtils;
import feign.Contract; import feign.Contract;
import feign.Feign; import feign.Feign;
@ -82,20 +83,24 @@ public class SentinelFeign {
"fallback"); "fallback");
Class fallbackFactory = (Class) getFieldValue(feignClientFactoryBean, Class fallbackFactory = (Class) getFieldValue(feignClientFactoryBean,
"fallbackFactory"); "fallbackFactory");
String name = (String) getFieldValue(feignClientFactoryBean, "name"); String beanName = (String) getFieldValue(feignClientFactoryBean,
"contextId");
if (!StringUtils.hasText(beanName)) {
beanName = (String) getFieldValue(feignClientFactoryBean, "name");
}
Object fallbackInstance; Object fallbackInstance;
FallbackFactory fallbackFactoryInstance; FallbackFactory fallbackFactoryInstance;
// check fallback and fallbackFactory properties // check fallback and fallbackFactory properties
if (void.class != fallback) { if (void.class != fallback) {
fallbackInstance = getFromContext(name, "fallback", fallback, fallbackInstance = getFromContext(beanName, "fallback", fallback,
target.type()); target.type());
return new SentinelInvocationHandler(target, dispatch, return new SentinelInvocationHandler(target, dispatch,
new FallbackFactory.Default(fallbackInstance)); new FallbackFactory.Default(fallbackInstance));
} }
if (void.class != fallbackFactory) { if (void.class != fallbackFactory) {
fallbackFactoryInstance = (FallbackFactory) getFromContext(name, fallbackFactoryInstance = (FallbackFactory) getFromContext(
"fallbackFactory", fallbackFactory, beanName, "fallbackFactory", fallbackFactory,
FallbackFactory.class); FallbackFactory.class);
return new SentinelInvocationHandler(target, dispatch, return new SentinelInvocationHandler(target, dispatch,
fallbackFactoryInstance); fallbackFactoryInstance);

Loading…
Cancel
Save