• ContextLoaderListener与DispatcherServlet所加载的applicationContext的区别


    第一种配置方式:
    <servlet>
          <servlet-name>dispatcher</servlet-name>
          <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
          <init-param>
              <param-name>contextConfigLocation</param-name>
              <param-value>classpath*:applicationContext*.xml</param-value>
          </init-param>
          <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
          <servlet-name>dispatcher</servlet-name>
          <url-pattern>*.do</url-pattern>
      </servlet-mapping>
     
    第二种配置方式:
    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml,classpath:*applicationContext-*.xml</param-value>
    </context-param>
    <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
     
    区别:
    ContextLoaderListener中加载的context成功后,spring 将 applicationContext存放在ServletContext中key值为"org.springframework.web.context.WebApplicationContext.ROOT"的attribute中。
    DispatcherServlet加载的context成功后,如果 publishContext属性的值设置为true的话(缺省为true) 会将applicationContext存放在org.springframework.web.servlet.FrameworkServlet.CONTEXT. + (servletName)的attribute中。
    结论:
    从上面的分析可以看出,DispatcherServlet所加载的applicationContext可以认为是mvc私有的context,由于保存在servletContext中的key值与通过ContextLoaderListener加载进来的applicationContext使用的key值不相同,因此如果只使用DispatcherServlet加载context的话,如果程序中有地方使用WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext) 来试图获取applicati
  • 相关阅读:
    re
    jieba
    Normalization的作用,LN,BN,WN
    RBF神经网络
    其他论文
    numpy, pandas,collections.Counter
    tensorflow 相关
    机器翻译(machine translation)相关
    2020 weblogin rce CVE-2020-14882 漏洞利用POC
    CVE-2021-3019 漏洞细节纰漏
  • 原文地址:https://www.cnblogs.com/jiligalaer/p/4097791.html
Copyright © 2020-2023  润新知