使用解耦模块构建Spring应用程序

时间:2013-12-03 10:54:32

标签: spring maven decoupling

我正在开发一个使用Primefaces作为视图的webapp,我将其他项目中的Spring bean注入JSF Managed bean。

我有一个架构问题: 我为我使用的每个组件(业务逻辑,持久性和其他)创建了单独的项目(模块),并且还使用其接口创建单独的项目。 我希望我的webApp仅依赖于业务逻辑的接口,并使用Spring Dependency Injection注入BL的实现。 我想以递归方式实现这一点:业务逻辑仅依赖于其他接口,并使用spring注入实现。

问题是Maven pom文件中没有依赖于实际的实现,当我部署应用程序(在Web逻辑服务器上)时,没有部署实现jar,Spring也没有找到要连接的bean。

有没有办法在不向实际实现添加依赖项的情况下实现解耦? 如果项目没有作为依赖项添加,我可以从其他项目中包含Spring的bean配置文件吗?

我认为这种脱钩都错了吗?

感谢您的想法。

1 个答案:

答案 0 :(得分:2)

显然,你需要你的maven pom中的依赖项,否则将不包括任何东西。您可以添加具有运行时范围的依赖项,这些依赖项包括它们在您的最终战争中,但不包括在开发期间(范围编译)。

要加载模块的上下文,您可能会为文件提供命名约定和/或标准位置。有了它,您可以在Web应用程序bean xml

中执行类似的操作
<import resource="classpath*:/META-INF/spring/*-context.xml" />

这会从类路径上的-context.xml目录加载所有以/META-INF/spring结尾的文件(包括jar文件)。

相关问题