Spring容器和Servlet之间的交互

时间:2014-08-01 10:10:56

标签: spring spring-mvc servlets spring-portlet-mvc embedded-tomcat-7

我试图理解Spring框架容器和Servlet之间的管道。我刚刚开始并相信Spring MVC应用程序可以使用servlet,portlet等,

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

如果有人能够更好地发挥Spring框架和(比如)和嵌入式servlet容器(如Tomcat / getty)之间的管道,那将是很棒的。谢谢!

1 个答案:

答案 0 :(得分: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文件。

那清楚了吗?