Spring如何管理Spring mvc中的依赖项

时间:2018-05-09 04:39:52

标签: spring spring-mvc

spring应用程序上下文如何在tomcat容器或任何其他容器中工作。它如何为每个请求保留注入的bean,就像bean创建它一样,它再也不会创建它。它如何维护这种依赖? 它是否在serveltcontext中维护这个自动装配的bean,因为它只被初始化一次? Spring如何在配置DispacherServlet时控制整个webapp? 我知道它如何在使用main函数的泛型应用程序中工作,我想从Web应用程序点了解它?

1 个答案:

答案 0 :(得分:0)

bean的默认范围是在春天的单线态。因此,春天的单一豆是每个IOC容器的真正单个对象。实际上,所有Web资源都在webApplicationContext中维护。

WebApplicationContext是普通ApplicationContext的扩展,它具有Web应用程序所需的一些额外功能。 webApplicationContext绑定到您的ServletContext

在spring mvc中定义如下内容:

<web-app>

    <servlet>
        <servlet-name>golfing</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>golfing</servlet-name>
        <url-pattern>/golfing/*</url-pattern>
    </servlet-mapping>

</web-app>

如果您忘记使用spring,那么它实际上是web.xml中的servlet定义。

设置DispatcherServlet并为该特定DispatcherServlet发出请求后,DispatcherServlet开始处理请求,如下所示:

  1. 在请求中搜索和绑定WebApplicationContext,作为控制器和进程中的其他元素可以使用的属性。它默认绑定在密钥DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE下。
  2. 区域设置解析程序绑定到请求,以使进程中的元素能够解析处理请求时使用的区域设置(呈现视图,准备数据等)。如果您不需要区域设置解析,则不需要它。
  3. 主题解析器绑定到请求,以允许视图等元素确定要使用的主题。如果您不使用主题,则可以忽略它。
  4. 如果指定了多部分文件解析程序,则会检查请求的多部分;如果找到了多部分,请求将被包装在MultipartHttpServletRequest中,以便进程中的其他元素进一步处理
  5. 搜索适当的处理程序。如果找到了处理程序,则执行与处理程序关联的执行链(预处理程序,后处理程序和控制器)以准备模型或渲染。
  6. 如果返回模型,则呈现视图。如果没有返回模型,(可能是由于预处理器或后处理器拦截请求,可能是出于安全原因),则不会呈现任何视图,因为该请求可能已经完成。
  7. Spring有很好的文档。您应该阅读它以了解流程。 Spring-mvc doc