如果我们在非@Controller类中,使用@RequestMapping注解,会发现它是无效的,原因是springMvc在解析@RequestMapping注解时只会解析类上标注有@Controller注解或者@RequestMapping注解的类,参见源码如下
/**
* RequestMappingHandlerMapping的方法
* <p>
* 给定类型是否是一个handler类
* <p>
* 期望处理器类具有类级别的@Controller注解或类型级别的@RequestMapping注解
* 如果具有这两个注解之一,那么该类就是handler类型
*
* @param beanType 被检查的bean的类型
* @return 如果是handler类型,则为“ true”,否则为“ false”。
*/
@Override
protected boolean isHandler(Class<?> beanType) {
//类上是否具有@Controller或者@RequestMapping注解
return (AnnotatedElementUtils.hasAnnotation(beanType, Controller.class) ||
AnnotatedElementUtils.hasAnnotation(beanType, RequestMapping.class));
}