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

DispatcherServlet创建另一个应用程序上下文?

刘焱
2023-03-14
问题内容

我已经使用ContextLoaderListener和上下文init-parameter 配置了根应用程序上下文contextConfigLocation

然后,JSF(* .jsf)变量解析器访问根上下文。它工作正常。

现在的问题是,经过的请求(* .do)DispatcherServlet将获得另一个应用程序上下文,然后将单例bean实例化两次。

我不需要其他的应用程序上下文DispatcherServlet,如何指定它来重用由加载的现有根应用程序上下文ContextLoaderListener

注意

  1. 阅读答案中的参考页后,我知道根上下文和调度程序上下文之间存在上下文分隔,但是没有一个参考告诉我要去哪里。因此,这是我的解决方案,可能对面临类似问题的其他人有所帮助:

  2. 在调度程序servlet:的上下文配置XML中dispatcher-servlet.xml,我重复了 已在根上下文中定义的define定义。因此将其删除。该dispatcher-servlet.xml只需要定义仅用于Spring MVC的那些豆子。

在根上下文中已经扫描并实例化了所有控制器,但是,默认情况下,Spring MVC不会在根上下文中注册用于请求映射的控制器。你可以:

2.1。在根上下文中,@Controller从中排除<component-scan>,并且@Controller仅在dispatcher-servlet.xml中进行扫描。

2.2。或者,将该属性设置DefaultAnnotationHandlerMapping.detectHandlersInAncestorContexts为true:

(dispatcher-servlet.xml:)

<bean id="handlerMapping" class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
    <property name="detectHandlersInAncestorContexts" value="true" />
</bean>

问题答案:

为了回答你的第一个问题,DispatcherServlet创建了一个上下文,因为这是它允许自己进行配置的方式,并且如果你在一个应用程序中有多个DispatcherServlet,则需要分别对其进行配置。因此,每个对象都有其自己的上下文,并且每个上下文都与“根”上下文分开,在该根上下文中,所有真实的“工作” Bean都应存在,以便可以在其他上下文之间共享。在过去的几周中,由于这个问题的混乱而产生了许多问题。



 类似资料:
  • 问题内容: 我有2个项目,其中一个包含在另一个构建路径中,两个项目都有自己的应用程序上下文来定义他的bean。 我想管理全局事务,因此我必须在一个应用程序上下文中同时导入这两个事务,但是我没有找到做到这一点的方法。 在不同的项目中可能有2个应用程序上下文,并将其中一个导入另一个。 如果没有可能,那将是最佳解决方案? 我认为成为1中的2个项目。 问题答案: 是的,可以导入;在您的一个appconte

  • 问题内容: 我确信你们中有人注意到,如果您有Acrobat Reader(或其他PDF阅读器),并在Firefox中打开一个PDF,您会看到它嵌入在您的标签中。有什么方法可以将应用程序嵌入JFrame中? 问题答案: 这是一个相当棘手的问题。通常,诸如Adobe Reader之类的本机应用程序不提供可以嵌入到swing应用程序中的组件。但是在Windows中,有COM / OLE方法可以将应用程序

  • 本文向大家介绍clojure 创建一个新的应用程序,包括了clojure 创建一个新的应用程序的使用技巧和注意事项,需要的朋友参考一下 示例 按照上述说明并安装Leiningen后,请运行以下命令来启动新项目: 这将使用该<project-name>文件夹中的默认Leiningen模板设置一个Clojure项目。莱宁根有多个模板,这些模板会影响项目的结构。最常见的是使用的模板“ app”,它添加了

  • 问题内容: 我有一个像这样的应用程序工厂 然后,我有一个脚本,可以在应用程序上下文之外获取CSV。该脚本是一个cron,每x小时运行一次 我想以某种方式更新应用程序正在使用的sqlite数据库。这可能吗? 问题答案: Flask-SQLAlchemy只需要一个应用程序上下文即可运行。您可以手动创建应用上下文。 这来自这里和这里的文档。

  • 我想创建一个portlet(让我们称之为“Action Manager”)来列出与我的Action Manager portlet相同页面中的所有portlet中的所有操作方法(使用Spring注释)。 我的所有其他portlets都使用< code > ParameterHandlerMapping 将传入的请求映射到适当的控制器 因此,我的目的是获取当前页面中的所有portlet(我已经在这样

  • Ember CLI,Ember的命令行界面提供了一个标准的项目结构,一组开发工具和一个插件系统。这允许Ember开发人员专注于构建应用程序,而不是构建使它们运行的​​支持结构。可通过ember --help显示Ember CLI提供的命令,或通过ember help <command-name>查看特定命令的信息。 创建应用程序 $ ember new super-rentals 上述ember