factory.NoUniqueBeanDefinitionException 问题以及解决办法整理
factory.NoUniqueBeanDefinitionException 问题以及解决办法整理
RequestMappingHandlerMapping mapping = null;
try {
mapping = applicationContext.getBean(RequestMappingHandlerMapping.class);
}catch (Exception ex){
mapping = applicationContext.getBean("requestMappingHandlerMapping",RequestMappingHandlerMapping.class);
}
// RequestMappingHandlerMapping mapping = applicationContext.getBean(RequestMappingHandlerMapping.class);
//获取url与类和方法的对应信息
Map<RequestMappingInfo, HandlerMethod> map = mapping.getHandlerMethods();
for (RequestMappingInfo info : map.keySet()){
//获取url的Set集合,一个方法可能对应多个url
Set<String> patterns = info.getPatternsCondition().getPatterns();
// 这里可获取请求方式 Get,Post等等
// Set<RequestMethod> methods = info.getMethodsCondition().getMethods();
for (String url : patterns){
try {
if("/error".equals(url)){
continue;
}
}catch (Exception ex){
log.error(ex);
}
}
}
曾在核心包中写了
mapping = applicationContext.getBean(RequestMappingHandlerMapping.class);
但是在部分新工程中引入会报错
NoUniqueBeanDefinitionException
原因
pringboot 有2个RequestMappingHandlerMapping 实现的Bean,当根据类型获取时,不能区分,再加之这个属于Spring 内部配置,不能使用@Primary 解决
解决方法:
applicationContext.getBean("requestMappingHandlerMapping",RequestMappingHandlerMapping.class);