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容器。

  • 相关阅读:
    catalina_home与catalina_base
    log4j配置
    lsof
    定时任务-crontab
    access日志配置
    java常识
    mysql事务隔离级别与实现原理
    文件描述符设置
    gpio 預設值
    synchronous interrupt and asynchronous interrupt
  • 原文地址:https://www.cnblogs.com/kltsee/p/15217081.html
Copyright © 2011-2022 走看看