【发布时间】:2012-10-08 16:24:43
【问题描述】:
我有一个项目 MyProject,它依赖于另一个项目 BaseProject 中的配置。在 BaseProject 中,我依赖于许多不同的项目,如 ErrorLogging、PerformanceLogging 等......我希望能够构建顶级项目 (MyProject) 并让它过滤那些项目中的所有 spring xml 文件作为依赖项。我没有运气。我可以看到豆子,但它们没有被过滤。一些 bean 正在使用它们自己的 pom 中定义的默认过滤器进行过滤,但没有使用来自 MyProject 的过滤器。
MyProject - 这包含过滤器文件并从其他项目导入配置。
BaseProject - 定义了需要过滤的 spring bean。
ErrorLogging - 定义了需要过滤的 spring bean。
当我从 MyProject 运行一个包时,所有 spring 文件都被正确地提取到 jar 文件中,但它们仍然包含属性占位符值 ${error.logging.host} 例如...... MyProject 中的 bean 被正确过滤。替代方法是在 MyProject 中定义 bean,但其中大约有 10 个项目使用 BaseProject 和它的 bean,我不想在 10 个单独的项目中重新定义它们。
如果有人能对这个问题有所了解,那就太好了。谢谢
编辑:
为了更清楚地说明这一点,我在项目 ErrorLogging 中有一个名为 errors-config.xml 的 spring beans xml 定义,它定义了用于连接数据库的 beans。这只是有连接详细信息的占位符,应该由 MyProject 内部的 filter.properties 文件提供。
errors-config.xml 作为资源导入到位于 BaseProject 内部的 baseproject-config.xml。将基础项目及其配置文件导入 MyProject。
然后我使用 Maven 构建 MyProject,我希望将 errors-config.xml 中的属性占位符替换为 MyProject 中 filter.properties 中的值。 MyProject 可以成功过滤它自己的文件,但不能过滤 ErrorsLogging 项目的文件。 ErrorsLogging 似乎从它自己的 src/main/resources 文件夹而不是 MyProject 文件夹中提取过滤器。
【问题讨论】:
-
您能否提供更多详细信息。这是 BaseProject 或 ErrorLogging 项目中定义的 bean 的示例,以及您如何尝试在 MyProject 上下文中排除它们。
-
我会编辑帖子,因为它更容易
-
似乎是
PropertiesPlaceHolderConfigurer的工作,请参阅static.springsource.org/spring/docs/3.0.x/… -
嗯,我认为我需要更具体的东西,因为我已经定义了属性文件。我认为这一定与过滤时发生的顺序有关,加载spring上下文文件并将它们从依赖项中提取到目标文件夹中。我侦察它们首先被过滤,然后当我从 ErrorLogging 的默认过滤器中获取过滤器值时提取它们