1

我对 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但无法使用其他任何内容?

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

谢谢。

4

1 回答 1

2

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

@Service 被构造了两次

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

于 2013-01-03T10:05:31.930 回答