SpringMVC Interceptor 解析,加载源码流程
本文说什么
interceptor从哪里来,怎么创建,怎么加载,在哪里被使用,以xml的配置形式为例
xml配置解析阶段
直接打开spring-webmvc的源码包找到spring.handlers,这个是spring对于组件xml解析模块。
打开后一看说明,mvc这个标签是,是通过这个 org.springframework.web.servlet.config.MvcNamespaceHandler,解析的直接找到看一下
http\://www.springframework.org/schema/mvc=org.springframework.web.servlet.config.MvcNamespaceHandler
发现是
public class MvcNamespaceHandler extends NamespaceHandlerSupport {
@Override
public void init() {
registerBeanDefinitionParser("annotation-driven", new AnnotationDrivenBeanDefinitionParser());
registerBeanDefinitionParser("default-servlet-handler", new DefaultServletHandlerBeanDefinitionParser());
registerBeanDefinitionParser("interceptors", new InterceptorsBeanDefinitionParser());
registerBeanDefinitionParser("resources", new ResourcesBeanDefinitionParser());
registerBeanDefinitionParser("view-controller", new ViewControllerBeanDefinitionParser());
registerBeanDefinitionParser("redirect-view-controller", new ViewControllerBeanDefinitionParser());
registerBeanDefinitionParser("status-controller", new ViewControllerBeanDefinitionParser());
registerBeanDefinitionParser("view-resolvers", new ViewResolversBeanDefinitionParser());
registerBeanDefinitionParser("tiles-configurer", new TilesConfigurerBeanDefinitionParser());
registerBeanDefinitionParser("freemarker-configurer", new FreeMarkerConfigurerBeanDefinitionParser());
registerBeanDefinitionParser("velocity-configurer", new VelocityConfigurerBeanDefinitionParser());
registerBeanDefinitionParser("groovy-configurer", new GroovyMarkupConfigurerBeanDefinitionParser());
}
}
这个就直接找到<mvc:*> 的所有表现对应的解析类了,直接找到
registerBeanDefinitionParser("interceptors", new InterceptorsBeanDefinitionParser