zoukankan      html  css  js  c++  java
  • SpringMvc-DispatchServlet初始化

    WebApplicationContext rootContext =WebApplicationContextUtils.getWebApplicationContext(getServletContext());
    ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE
    业务容器

    request.setAttribute(WEB_APPLICATION_CONTEXT_ATTRIBUTE, getWebApplicationContext());
    webApplicationContext
    web容器

    HttpServletBean

    public final void init() throws ServletException {...}
    第一次调用serverlet时触发
    initServletBean();

    FrameworkServlet

    protected final void initServletBean() throws ServletException {...}
    重写了HttpServletBean的initServletBean()
    初始化web容器

    this.webApplicationContext = initWebApplicationContext();

    protected WebApplicationContext initWebApplicationContext() {...}

    WebApplicationContext rootContext =
    WebApplicationContextUtils.getWebApplicationContext(getServletContext());
    获取父容器(业务容器),springboot在启动时就创建了,并设置到serverlet中

    onRefresh(wac); 调用的是DispatchServlet重写的onRefresh(wac)
    初始化springmvc各大组件

    DispatchServlet

    protected void onRefresh(ApplicationContext context) {...}
    initStrategies(context);

    protected void initStrategies(ApplicationContext context) {...}initMultipartResolver(context);
    initLocaleResolver(context);
    initThemeResolver(context);
    initHandlerMappings(context);
    initHandlerAdapters(context);
    initHandlerExceptionResolvers(context);
    initRequestToViewNameTranslator(context);
    initViewResolvers(context);
    initFlashMapManager(context);

    -initHandlerMappings(context){...};
    所谓初始化,不过是将ioc容器中handlerMapping,根据handlerMapping.class,从ioc容器,全部获取出来,
    然后装到DispatchServlet的List handlerMappings中。

    ===========
    在SpringBoot的ServletWebServerApplicationContext,貌似没有父子容器,在service层也可以调Controller的方法。controller是一个@Component,所以会被Spring注册到ioc容器。然后初始化HandlerMapping即Controller到ioc容器。

  • 相关阅读:
    20191010-2 每周例行报告
    2018092609-2 选题 Scrum立会报告+燃尽图 01
    20190919-1 每周例行报告
    20190919-4 单元测试,结对
    20190919-6 四则运算试题生成,结对
    20190919-5 代码规范,结对
    PSP总结报告
    20181204-1 每周例行报告
    每个成员明确公开地表示对成员帮助的感谢 (并且写在各自的博客里)
    作业要求 20181127-2 每周例行报告
  • 原文地址:https://www.cnblogs.com/kltsee/p/15217081.html
Copyright © 2011-2022 走看看