zoukankan      html  css  js  c++  java
  • springmvc的工作原理(原创)

    DispathcerServler继承FrameworkServlet FrameworkServlet 继承HttpServletBean HttpServletBean 继承 HttpServlet实现EnvironmentAware接口

    容器启动首先执行HttpServletBean的init方法 init方法将执行FrameworkServlet的initServletBean方法

    FrameworkServlet的initServletBean方法将 初始化webapplicationContext this.webApplicationContext = initWebApplicationContext();

    initWebApplicationContext方法将判断容器是否启动,否则将 wac = createWebApplicationContext(rootContext);

    createWebApplicationContext方法里将configureAndRefreshWebApplicationContext(wac);

    接着在configure...方法里面添加 wac.addApplicationListener(new SourceFilteringListener(wac, new ContextRefreshListener()));

    private class ContextRefreshListener implements ApplicationListener<ContextRefreshedEvent> {

      public void onApplicationEvent(ContextRefreshedEvent event) {    FrameworkServlet.this.onApplicationEvent(event);   }  }

    上面的方法将添加Listener后,监听ContextRefreshListener,然后出发onApplicationEvent启动DispatherServlet的onRefresh方法

    @Override  protected void onRefresh(ApplicationContext context) {   initStrategies(context);  }

    initStrategies将初始化springmvc

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

  • 相关阅读:
    linuxshell中"2>&1"含义
    Java中正数与负数操作>>、>>>的区别
    jsp el表达式
    struct2常用标签
    shell正则表达式
    IPV6学起来很费力?你看看,也就这样简单吧!
    STP、RSTP、MSTP合集思维导图
    HCIE之路--ISIS思维导图
    佛祖保佑,永不宕机! 永无BUG!
    震惊!ARP安全竟然还可以这样配置?
  • 原文地址:https://www.cnblogs.com/chenzhao/p/2749295.html
Copyright © 2011-2022 走看看