springboot中的HandlerMapping
在上篇文章中已经说明HandlerMapping
的作用是根据当前请求request
获取一个包含当前请求处理器handler
的HandlerExecutionChain
对象。handler
经HandlerApapter
适配后,可以将handler
转换为一个特定的对象,以此确定哪个类的哪个个方法来处理该请求。springboot中默认注册的HandlerMapping
有:RequestMappingHandlerMapping
,BeanNameUrlHandlerMapping
,SimpleUrlHandlerMapping
,RouterFunctionMapping
,在这里我们只说前三种。
RequestMappingHandlerMapping
这个就是我们常见的基于注解的映射方式,例如:
@Controller
@RequestMapping("/testA")
public class MappingTest1 {
@ResponseBody
@RequestMapping("/index")
public String index(){
return "RequestMappingHandlerMapping test!";
}
}
对于加上上面的注解后,简单解释一下我们直接可以访问localhost/testA/index
的原因:在RequestMappingHandlerMapping
的源码中有一段代码如下:
protected boolean isHandler(Class<?> beanType) {