注解配置整合springmvc源码笔记

    科技2026-01-24  11

    启动tomcat后,tomcat会去扫描MATA-INF-》services文件夹下的配置文件 这个类继承了ServletContainerInitializer接口,tomcat会去调用onStartUp方法。 这个类主要实现ServletContainerInitializer接口,这个类上有定义了HandlesTypes注解,然后调用onStartUp方法,会把对应的LoadServlet.class的实例对象,通过反射传入进来。然后再实例化调用loadOnStarp方法。

    这个方法主要的作用是递归文件夹,并赛选出继承WebApplicationInitializer接口的类 筛选完成之后调用他们的onStartUp方法。

    我自己写了一个类,继承了AbstractAnnotationConfigDispatcherServletInitializer,onStartUp方法会调用它的父类 会调用到这里,首先它会先调用父类的onStartup,并传入Servlet的上下文 这里主要是注册扫描配置文件的配置,也就是告诉它扫描哪个包下面的文件,并返回WebApplicationContext(AnnotationConfigWebApplicationContext) 也就是这个文件,自己定义的 然后加到监听器里边 然后注册Servlet到Servlet上下文中

    启动spring容器

    Dispatchservlet的refresh是在哪里做的?是谁做的?

    refresh完成之后会触发监听器的contextInitialized事件 这个是由listener触发的,把这个value塞入到了map里边。 然后又来到了HttpServletBean,这个时候会触发dispatchservert引发的容器的启动

    然后拿到dispatcher的上下文对象

    然后准备好上下文之后,刷新加载的容器 总结: ContextLoaderListener的启动过程是在onstart里边搞掂的,我们需要创建一个Listenr类,然后加入到ServletContext里边来,通过refresh方法区启动这个容器。而DispatcherServlet也同理,当容器启动的时候会调用Servlet接口的Init方法,然后也会调用refresh方法,去启动容器。

    Processed: 0.012, SQL: 9