3

我试图了解 Spring 框架容器和 Servlet 之间的关系。我刚刚开始,相信 Spring MVC 应用程序可以与 servlet、portlet 等一起使用,

当一个使用 servlet 的 spring 应用程序启动时,我相信应用程序的世界始于一个 spring 容器的创建,它的主要功能(不完全是 main,但类似的东西)创建 bean,将它们缝合等,然后它还创建一个servlet,即 DispatcherServlet,它开始接受连接并将请求路由到 spring 应用程序中的其他控制器。由于 spring 容器不会主动管理 servlet,因此 DispatchServlet 不能被认为是 spring 容器的一部分。我的上述理解正确吗?

如果有人能更清楚地了解 Spring 框架和(比如说)和嵌入式 servlet 容器(如 Tomcat/getty)之间的管道,那就太好了。谢谢你 !

4

1 回答 1

0

Spring 本身不是一个容器,它是一个框架。然而,它确实有一个 IoC 容器,并且这个容器是建立在 bean 和上下文之上的。例如,在 Web 应用程序中,有两个上下文:

  • DispatcherServlet 上下文
  • 根应用程序上下文

因此,为了回答您的问题,调度程序 servlet 只是一个标准 servlet,但它有自己的 spring IoC 上下文,在该上下文中声明和连接控制器、视图模板等。如果您查看 Spring Web 应用程序的 web.xml,您会看到类似这样的内容...

   <servlet>
        <servlet-name>appServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

这只是一个标准的 servlet 声明,您向它提供用于创建自己的 IoC 上下文的 xml 文件。

把事情搞清楚了吗?

于 2014-08-01T10:38:17.327 回答