RequestMappingHandlerMapping的@Autowired无法注入问题
1.先贴上具体报的异常:
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
2.遇到问题的场景:
在使用shiro做权限管理的时候,用到了RequestMappingHandlerMapping用来获取标签以达到重新加载权限.遇到了此异常网上找到的是用@Autowired自动注入private RequestMappingHandlerMapping rmhm;启动猫一直报异常.
3.解决的方法:
先创建一个类手动配置:
package com.skykey.controller; /** * 创建时间:2018年9月11日 下午7:10:46 * 项目名称:ecssm * @author Mamba * @version 1.0 * 文件名称:RequestMappingHandlerConfig.java **/ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; @Configuration public class RequestMappingHandlerConfig{ @Bean public RequestMappingHandlerMapping requestMappingHandlerMapping() { RequestMappingHandlerMapping mapping = new RequestMappingHandlerMapping(); return mapping; } }
然后在controller中用RequestMappingHandlerConfig获取RequestMappingHandlerMapping:
public class PermissionController { @Autowired private PermissionService ps; @Autowired RequestMappingHandlerConfig requestMappingHandlerConfig; /** * * @Title: reloadPermission * @Description: TODO 将权限表达式动态加载到数据库中的权限表中 * @param @return * @return String * @throws */ @RequestMapping("/reloadPermission") public String reloadPermission(){ //获取所有带有requestmapping标签的方法 // 读取方法上的RequestMapping注解信息 final RequestMappingHandlerMapping requestMappingHandlerMapping = requestMappingHandlerConfig.requestMappingHandlerMapping (); Map<RequestMappingInfo, HandlerMethod> handlerMethods = requestMappingHandlerMapping.getHandlerMethods(); } }
转 : https://blog.csdn.net/mamba_he/article/details/82622047