我对 Spring 框架有点熟悉,但从项目架构的角度来看,我仍然有很多关于使用 Spring 的问题。现在我正在设置 Spring 3 和一个 Maven Web 应用程序,并愿意尝试所有花哨的组件扫描和自动装配功能,但这是我感到困惑的地方。
我正在尝试将项目分解为子模块。在某些时候,这些子模块可能包含something-context.xml
在 中classpath*:resource/META-INF
,例如当我想在一个单独的模块中定义一个与 datSource 相关的东西时。所以这很好,让我们从所有 jar 的类路径中加载上下文文件。
但在这里它变得模糊 - 假设我正在使用组件扫描。我显然在使用 spring DispatcherServlet
,它需要加载一个 servlet 上下文,然后在 web.xml 中指定了一个全局应用程序上下文参数contextConfigLocation
。
因此,现在 servlet 上下文配置启用了组件扫描功能,com.mycom.project.controllers
并且全局加载contextConfigLocation
的上下文具有加载组件扫描功能的上下文,包com.mycom.project
也搜索classpath*:META-INF/spring/*-context.xml
.
所以我的问题是 - 考虑到组件扫描用于 forcom.mycom.project.controllers
和,这个负载控制器是否两次com.mycom.project
?或者它是否全部加载到一个巨大的容器中,或者全局声明的contextConfigLocation
参数DispatcherServlet
是某种访问问题?如DispatcherServlet
将仅达到定义的内容,servlet-context.xml
但无法使用其他任何内容?
如果我的假设是错误的,我可以就如何管理多模块项目问题提出建议吗?
谢谢。