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);
posted @ 2022-09-13 09:57  李先生不卖牛肉面  阅读(171)  评论(0编辑  收藏  举报