了解spring调度程序servlet初始化

时间:2014-12-23 11:05:49

标签: spring servlets

以下是spring文档建议初始化dispatcherServlet的方法:

<web-app>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/root-context.xml</param-value>
    </context-param>
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value></param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
</web-app>

我的问题是在init-param标记内提供一个空的参数值。尽管将该参数定义为context-param,但我们仍然提供空值。因此,当传递给servlet的contextConfigLocation方法时,null应为init()。怎么了,请纠正我。

1 个答案:

答案 0 :(得分:9)

在Spring Web Applications中,有两种类型的容器,每种容器都以不同方式配置和初始化。

  • 应用程序上下文
  • Web应用程序上下文

应用程序上下文由您在context-params中指定并由ContextLoaderListener选取的配置文件进行初始化。这纯粹是我认为与业务逻辑相关的bean。

Web应用程序上下文是可能存在或可能不存在的应用程序上下文的子项。每个DispatcherServlet都有关联的WebApplicationContext,它从init-params中获取spring bean来创建上下文。

可以从每个WebApplicationContext中引用ApplicationContext中可用的任何bean。

我们有两种不同的bean配置的原因是为了保持中间层服务(如业务逻辑组件和数据访问类(通常在ApplicationContext中定义))和Web相关组件(如控制器和视图)之间的明确区分解析器(在每个Dispatcher Servlet的WebApplicationContext中定义)。