定义Feign接口时,注意要在方法参数中加入 value="xxx"属性,否则创建bean实例时会失败,导致应用无法启动。
需留意的是,Controller层的方法不一定要加入value="xxx",而开发有时直接将controller代码复制到feign,导致出现问题。
Map<String, Object> getBeansWithAnnotation(Class<? extends Annotation> annotationType) throws BeansException.
可以替换为下面方式,避免所有所有报异常。
String[] beanNames= applicationContext.getBeanNamesForAnnotation((Class<? extends Annotation>) Class
.forName("org.springframework.cloud.openfeign.FeignClient"));
Map<String, Object> beans= new LinkedHashMap<>(beanNames.length);
for (String beanName: beanNames) {
try {
beans.put(beanName, applicationContext.getBean(beanName));
} catch (BeansException e) {
log.warn("FeignDependency getBean error, beanName={}", beanName, e);
}
}
网友评论