springmvc核心流程

引用官方的demo示例:

public class MyWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class<?>[] { RootConfig.class };
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class<?>[] { App1Config.class };
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] { "/app1/*" };
    }
}
mvc-context-hierarchy.png

DispatcherServlet会形成两个父子容器:
Root WebApplicationContext(父容器:SpringIoc)负责包扫描所有组件(除springmvc的组件),例如:Services,Dao
Servlet WebApplicationContext(子容器:SpringWebIoc)负责包扫描与自身相关的,例如:Controller,HandlerMapping
子容器会先从自己的容器中寻找Bean组件,找不到才会到父容器中寻找。但是父容器无法到子容器寻找组件。
达到了容器隔离,互不影响的目的

springmvc准备阶段
DispatcherServlet.png

springmvc启动准备阶段.jpg
Servlet阶段是如何处理的请求呢?
servlet处理请求.png
springmvc如何处理请求?
DispatcherServlet处理请求.png
请求访问.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容