在多个项目/模块中使用多个属性文件(通过 PropertyPlaceholderConfigurer)
我们目前正在编写一个应用程序,该应用程序被拆分为多个项目/模块。例如,让我们采用以下模块:
- 我的应用程序-DAO
- myApp-jabber
每个模块都有自己的Spring上下文xml文件。对于 DAO 模块,我有一个 PropertyPlaceholderConfigurer,它读取具有必要 db 连接参数的属性文件。在 jabber 模块中,我还有一个用于 jabber 连接属性的 PropertyPlaceHolderConfigurer。
现在是主要应用程序,包括myApp-DAO和myApp-jabber。它读取所有上下文文件并启动一个大的Spring上下文。不幸的是,每个上下文似乎只能有一个属性占位符配置器,因此无论哪个模块首先加载,都能够读取它的连接参数。另一个引发异常,错误如“无法解析占位符'jabber.host'”
我有点明白问题是什么,但我真的不知道解决方案 - 或者我的用例的最佳实践。
如何配置每个模块,以便每个模块都能够加载自己的属性文件?现在,我已经将 PropertyPlaceHolderConfigurer 从单独的上下文文件中移出,并将它们合并到主应用程序的上下文中(使用单个 PropertyPlaceHolderConfigurer 加载所有属性文件)。不过这很糟糕,因为现在每个使用dao模块的人都必须知道,他们需要一个属性PlaceHolderConfigurer在他们的上下文中。此外,dao模块中的集成测试也失败了等。
我很好奇听到来自stackoverflow社区的解决方案/想法。