当前位置: 首页 > 知识库问答 >
问题:

ApplicationContext和ServletContext

常飞翼
2023-03-14

当涉及到Spring MVC应用程序时,我会混淆ApplicationContext和ServletContext。我知道每个Spring Web应用程序只有一个ApplicationContext,每个Web应用程序也只有一个ServletContext。为了在web.xml中为ApplicationContext和ServletContext初始化值,我们将在context-param标记中添加一些内容。

这就是令我困惑的一点。这两者之间有什么不同(我知道ApplicationContext有一些方法可以使用bean)?什么时候使用ApplicationContext,什么时候使用ServletContext?

共有1个答案

明安阳
2023-03-14

它在部署Servlet应用程序时初始化。Servlet上下文保存整个Servlet应用程序的所有配置(init-param、context-params,等等)。

这是Spring特有的东西。它由Spring初始化。它保存spring配置文件中定义的所有bean定义和bean的生命周期。Servlet-Context对这些事情一无所知。

Spring中有两种类型的上下文:父上下文和子上下文。

  <listener>
        <listener-lass> 
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
  </listener>
  <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/service-context.xml,
            /WEB-INF/dao-context.xml,
            /WEB-INF/was-context.xml,
            /WEB-INF/jndi-context.xml,
            /WEB-INF/json-context.xml
        </param-value>
  </context-param>

role-purposition-of-contextLoaderListener-in-spring
spring-contextLoaderListener-and-dispatcherservlet-conceptes
当spring容器启动时,它从配置文件中读取所有bean定义,创建bean对象,并管理bean对象的生命周期。这种配置完全是可选的。

DispatcherServlet vs ContextLoaderListener
/declaring-spring-bean-in-parent-context-vs-child-context

<servlet>
    <servlet-name>myWebApplication</servlet-name>
    <servlet-class>
         org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>myWebApplication</servlet-name>
    <url-pattern>/app/*</url-pattern>
</servlet-mapping>

当spring web应用程序启动时,它将查找spring bean配置文件mywebapplication-servlet.xml。它将读取所有bean定义,并创建和管理bean对象的生命周期。如果父spring上下文可用,它将子spring上下文与父spring上下文合并。如果没有可用的Spring父上下文,则应用程序将只有子Spring上下文。

 类似资料:
  • 主要内容:1.BeanFactory 与 ApplicationContext 的联系,2.BeanFactory 与 ApplicationContext 的区别1.BeanFactory 与 ApplicationContext 的联系 可以看出ApplicationContext 间接继承了 BeanFactory BeanFactory 接口,典型功能有: getBean ApplicationContext 接口,是 BeanFactory 的子接口。它扩展了 BeanFactory

  • 4.8. ApplicationContext beans包提供了以编程的方式管理和操控bean的基本功能,而context包下的ApplicationContext以一种更加面向框架的方式增强了BeanFactory的功能。多数用户可以采用声明的方式来使用ApplicationContext,甚至不用手动创建它,而通过ContextLoader这样的支持类,把它作为J2EE web应用的一部分自

  • 1、BeanFactory是Spring的最底层接口,包含bean的定义,管理bean的加载,实例化,控制bean的生命周期,特点是每次获取对象时才会创建对象。 ApplicationContext是BeanFactory的子接口,拥有BeanFactory的全部功能,并且扩展了很多高级特性,每次容器启动时就会创建所有的对象。 ApplicationContext的额外功能: 继承MessageS

  • 主要内容:1.BeanFactory 的实现,2.ApplicationContext 的实现,3.BeanFactory 和 ApplicationContext的总结1.BeanFactory 的实现 1.1 DefaultListableBeanFactory 实现类 无解析@Bean. @Configuration 的功能 下面代码解析: 先是通过一个工具类得到BeanDefinition, 然后beanFactory 注册BeanDefinition 打印出工厂种的Bean 下面代码通

  • 问题内容: 我对Spring Framework还是很陌生,我一直在研究它,并将一些示例应用程序放在一起,以评估Spring MVC以便在即将到来的公司项目中使用。到目前为止,我非常喜欢我在Spring MVC中看到的内容,它似乎非常易于使用,并鼓励您编写对单元测试非常友好的类。 作为练习,我正在为我的一个样本/测试项目编写一种主要方法。我不清楚的一件事是BeanFactory和之间的确切差异Ap

  • 我有一个Springboot应用程序,它在运行时根据用户传递的输入参数从中查找bean。对于这种方法,我试图编写Mockito测试用例,但它不起作用,并抛出NullPointerException。 引导应用程序的类: 我试图为其编写测试用例的类: 我的测试用例如下: 每当我运行测试用例时,它都会在