gpt4 book ai didi

java - Spring 3应用程序上下文加载

转载 作者:行者123 更新时间:2023-11-30 04:33:09 27 4
gpt4 key购买 nike

我对 Spring 框架有点熟悉,但从项目架构的角度来看,关于 Spring 的使用仍然有很多问题。现在我正在设置 Spring 3 和 Maven Web 应用程序,并愿意尝试所有奇特的组件扫描和 Autowiring 功能,但这就是我感到困惑的地方。

我正在尝试将项目分解为子模块。在某些时候,这些子模块可能会在 classpath*:resource/META-INF 中包含 something-context.xml,例如当我想要定义一个 datSource 时相关的东西在一个单独的模块中。因此,很好,让您可以从所有 jar 的类路径中加载上下文文件。

但是这里变得模糊 - 假设我正在使用组件扫描。显然,我使用的是 spring DispatcherServlet,它需要加载 servlet 上下文,然后在 web.xml contextConfigLocation 中指定了一个全局应用程序上下文参数。

现在 servlet 上下文配置已为 com.mycom.project.controllers 启用了组件扫描功能,并且全局 contextConfigLocation 中加载的上下文已加载了组件的上下文包 com.mycom.project 的扫描功能还会搜索 classpath*:META-INF/spring/*-context.xml

所以我的问题是 - 考虑到组件扫描用于 com.mycom.project.controllerscom.mycom.project,这个负载 Controller 是否有两次?或者它是否全部加载到一个巨大的容器中,并且 DispatcherServlet 或全局声明的 contextConfigLocation 参数是一种访问问题?正如 DispatcherServlet 中那样,只能访问 servlet-context.xml 中定义的内容,但无法使用其他任何内容?

如果我的假设是错误的,我能否就如何管理多模块项目问题提出建议?

谢谢。

最佳答案

是的,您可能会遇到麻烦。请参阅此链接了解如何解决您的问题。

@Service are constructed twice

创建模块时的处理方式对我来说似乎是有效的。每个模块都有一个 context.xml 文件,一旦加载应用程序,所有模块都会被加载。您的模块是独立的,也可以在不同的环境中使用。我也差不多会这么做。

关于java - Spring 3应用程序上下文加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14136408/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com