当前位置: 首页 > 面试题库 >

Spring MVC中的ApplicationContext和WebApplicationContext有什么区别?

仲和韵
2023-03-14
问题内容

应用程序上下文和Web应用程序上下文之间有什么区别?

我知道WebApplicationContext用于Spring MVC架构的应用程序吗?

我想知道ApplicationContextMVC应用程序中有什么用途?什么样的豆类被定义ApplicationContext


问题答案:

Web应用程序上下文扩展了应用程序上下文,该上下文旨在与标准javax.servlet.ServletContext一起使用,因此能够与html" target="_blank">容器进行通信。

public interface WebApplicationContext extends ApplicationContext {
    ServletContext getServletContext();
}

如果WebBean中实现ServletContextAware接口,则在WebApplicationContext中实例化的Bean也将能够使用ServletContext。

package org.springframework.web.context;
public interface ServletContextAware extends Aware { 
     void setServletContext(ServletContext servletContext);
}

ServletContext实例可以做很多事情,例如通过调用getResourceAsStream()方法来访问WEB-INF资源(xml配置等)。通常,在Servlet Spring应用程序的web.xml中定义的所有应用程序上下文都是Web应用程序上下文,这既适用于根Webapp上下文,也适用于Servlet的应用程序上下文。

另外,取决于Web应用程序上下文的功能,可能会使你的应用程序更难测试,并且可能需要使用MockServletContext类进行测试。

servlet和根上下文之间的区别 Spring允许你构建多级应用程序上下文层次结构,因此,如果当前应用程序上下文中不存在所需的bean,则会从父上下文中获取所需的bean。默认情况下,在Web应用程序中,有两个层次结构级别.

这使你可以将某些服务作为整个应用程序的单例运行(Spring Security Bean和基本数据库访问服务通常位于此处),而另一项则作为相应服务中的单独服务运行,以避免Bean之间发生名称冲突。例如,一个Servlet上下文将为网页提供服务,而另一个将实现无状态Web服务。

当使用spring servlet类时,这两个级别的分离是开箱即用的:要配置根应用程序上下文,应在web.xml中使用context-param标记。

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/root-context.xml
            /WEB-INF/applicationContext-security.xml
    </param-value>
</context-param>

(根应用程序上下文由ContextLoaderListener创建,并在web.xml中声明

<listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener> 

)和Servlet应用程序上下文的servlet标签

<servlet>
   <servlet-name>myservlet</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
   <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>app-servlet.xml</param-value>
   </init-param>
</servlet>

请注意,如果省略init-param,那么在此示例中spring将使用myservlet-servlet.xml。



 类似资料:
  • 我知道用于面向Spring MVC体系结构的应用程序? 我想知道在MVC应用程序中有什么用途?在中定义了什么样的bean?

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

  • 本文向大家介绍请说明一下Spring中BeanFactory和ApplicationContext的区别是什么?相关面试题,主要包含被问及请说明一下Spring中BeanFactory和ApplicationContext的区别是什么?时的应答技巧和注意事项,需要的朋友参考一下 考察点:spring框架 参考回答: 概念: BeanFactory: BeanFactory是spring中比较原始,

  • 问题内容: 我一直认为Java 中的运算符用于验证其两个布尔操作数是否均为,并且该&运算符用于对两种整数类型进行按位运算。 最近我知道,也可以使用运算符来验证其两个布尔操作数是否均为,唯一的区别是即使LHS操作数为false,它也会检查RHS操作数。 Java中的运算符是否在内部重载?还是在这背后有其他概念? 问题答案: <-验证两个操作数 <-停止评估第一个操作数是否为false,因为结果为fa

  • 问题内容: JavaScript中的&和&&有什么区别? 示例代码: 似乎&&是一个逻辑上的“和”,如果两个都为true,则总是为我提供第二个值。 但是什么是&? (顺便说一下,&&在Python中似乎是“ and”;&在Python中似乎是&。) 问题答案: 是按位AND 该运算符期望 两个数字 并重新调整一个 数字。 如果它们不是数字,则将其强制转换为数字。 注意: 在Javascript中,

  • 问题内容: 我正在从Spring 2.5迁移到Spring 3。 他们介绍了一些黑魔法。预期仅在servlet配置文件中声明。 在Spring 2.5中,我刚刚使用,并且在分发服务器servlet配置XML中声明了标记,并使用了要扫描的基本包。 所以,我不知道是什么样的区别,并在servlet配置标签和我有什么可以消除在Spring3配置文件? 问题答案: 声明一般注释,比如支持,等等。 声明了注