Java Spring——什么时候我应该考虑在同一JVM中加载另一个上下文? 我只是想,我应该在什么时候考虑在春天加载多个应用程序上下文?到目前为止,我一直在将上下文文件与合并,以便只加载一个应用程序上下文

Java Spring——什么时候我应该考虑在同一JVM中加载另一个上下文? 我只是想,我应该在什么时候考虑在春天加载多个应用程序上下文?到目前为止,我一直在将上下文文件与合并,以便只加载一个应用程序上下文,java,spring,dependency-injection,java-ee-6,Java,Spring,Dependency Injection,Java Ee 6,你知道什么时候在同一个JVM中使用多个应用程序上下文吗?当你需要使用分层上下文时,例如,像这样。您的“web”上下文与您的“主”上下文是分开加载的,因此“主”上下文中定义的内容(服务/DAOs/etc)对“web”是可用的,但反过来就不行了。我几乎总是创建许多Spring配置文件来分离应用程序的不同层,但我总是通过单个应用程序上下文加载它们。在我看来,我使用Spring进行“应用程序组装”,将应用程序的各个组件连接在一起。在我看来,加载两种不同的上下文是没有意义的。只有一个应用程序,因此只需要一

你知道什么时候在同一个JVM中使用多个应用程序上下文吗?

当你需要使用分层上下文时,例如,像这样。您的“web”上下文与您的“主”上下文是分开加载的,因此“主”上下文中定义的内容(服务/DAOs/etc)对“web”是可用的,但反过来就不行了。

我几乎总是创建许多Spring配置文件来分离应用程序的不同层,但我总是通过单个应用程序上下文加载它们。在我看来,我使用Spring进行“应用程序组装”,将应用程序的各个组件连接在一起。在我看来,加载两种不同的上下文是没有意义的。只有一个应用程序,因此只需要一个上下文。也许我的观点过于简单。

我明白你的意思。但是,您是否知道这是否会导致一些性能改进等。?即使服务上下文加载在与web上下文相同的上下文中,有什么不好?我只是想让自己清楚一点。我还没有实际测量性能,但差异应该是微不足道的。然而,重要的是关注点的分离——您的服务不应该知道或关心您的UI控制器;拥有层次上下文可以防止你们有意或无意地将后者注入前者。感谢你们启发我关于“层次上下文”的知识!!我将对此做一些研究。稍微扩展一下这一思路,“只有一个应用程序,因此只需要一个类。它应该只包含main()函数”:-)层次上下文有助于保持层次分离。也许我误解了你的意思,因为我当然不同意你上面的例子。在一个直接的、非web的Java应用程序中,我只会调用“new-xxxApplicationContext(springFiles)”一次,但会传入许多spring文件。你是说有一种方法可以加载多个上下文并在它们之间建立关系,还是严格地说web MVC上下文是一种特例(我没有意识到)?好的,我使用了“谷歌”并看到它是特定于web的。谢谢你描述这个-我从来没有遇到过+1您可以加载多个单独的上下文(为了建立关系,它们必须具有层次结构,并且所说的关系只能是单向的——从孩子到父母);这不依赖于(尽管通常由)SpringMVC。您是否愿意这样做是另一个问题,“纯非web java应用程序”的答案可能是“不”。所以,我的例子,虽然明显过于夸张,但是恰当的——这一切都取决于所讨论的应用程序的复杂性。很酷。我使用Spring已经4-5年了,从来没有遇到过这个。。。疯子谢谢