我怀疑您遇到了与此问题有关的问题https://github.com/spring-cloud/spring-cloud-netflix/issues/466。
spring applicationContext 提供了一些实用方法来查找带有某些注解的bean。
该解决方案可能涉及引导 applicationContext 的开始并在那里搜索您的重叠注释。
为此,您需要注册一个 ApplicationListener 来搜索您的所有 @RequestMapping bean,这些 bean 进一步使用 @FeignClient 进行注释。
实现可能如下所示:
@Component
public class ContextStartupListener
implements ApplicationListener<ContextRefreshedEvent> {
@Autowired
private ApplicationContext applicationContext;
@Override
public void onApplicationEvent(ContextRefreshedEvent event){
for(String beanName : applicationContext.getBeanNamesForAnnotation(RequestMapping.class)) {
if(applicationContext.findAnnotationOnBean(beanName, FeignClient.class)!=null){
throw new AnnotationConfigurationException("Cannot have both @RequestMapping and @FeignClient on "+beanName);
}
}
}
}