这个类用来表示当前的一个HTTP请求条件,假设服务器接收到一个HTTP请求,spring mvc会根据这个请求方法,请求路径,请求头里的参数,来决定这个HTTP请求对应spring容器中的哪个RequestMappingInfo
假设现在容器中有3个RequestMappingInfo实例,这3个实例分别代表如下条件
实例1:只接受HTTP的GET请求,并且请求路径为localhost:8080/aa/bb
实例2:只接受HTTP的POST请求,并且请求路径为localhost:8080/aa/bb
实例3:只接受HTTP的GET请求,并且请求路径为localhost:8080/cc/dd
如果我们向服务器发送POST localhost:8080/aa/bb,那么很明显,spring mvc会将这个请求映射到实例2上面上去(当然实际情况并没有这么简单,这只是用作解释RequestMappingInfo是个什么)
然后在spring中有一个Map,这个Map的key就是RequestMappingInfo,value=Controller中的方法,这样,过来一个HTTP请求,spring就知道应该去执行哪个Controller中的哪个方法了
RequestMappingInfo这个类中看源码就知道,有很多匹配条件,例如:
// HTTP请求方法,GET,POST等等
Set<RequestMethod> methods = requestMappingInfo.getMethodsCondition().getMethods();
// HTTP媒体类型,注意这里,这里是匹配媒体类型,但是如果匹配上之后,后续还需要考虑@RequestBody和@RequestParam注解等等
Set<MediaType> consumableMediaTypes = requestMappingInfo.getConsumesCondition().getConsumableMediaTypes();
// 还有其他各种类型的匹配
除了spring自己使用这个类,我们作为程序员对于这个类的使用场景就是获取spring mvc容器中所有的URL:
// 我们可以用这些URL自己实现类似swagger的接口文档,或者存到数据,用来做一些接口访问的统计
Set<String> urls= requestMappingInfo.getPatternsCondition().getPatterns();