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