0

我有一个项目,其中包含来自父项目的 spring xml 配置。

我不需要在父项目的 xml 文件中定义特定的 bean,但我不想修改父项目。我也不想重写一整套 xml 文件。

如何仅在子项目中排除特定的 bean?

让我更具体一点。父项目有一个bean(例如)

<bean id = "example" class = "blah />

在子项目中,我希望能够在我的 xml 中做类似的事情。子项目根本不需要这个bean。

<exclude beanid="example" />
4

1 回答 1

0

通过在父级中排除 bean,您希望它不在子上下文中初始化,或者您需要在子上下文中用其他内容覆盖它?

如果是前者,您可以实现 a org.springframework.beans.factory.config.BeanFactoryPostProcessor,查找 bean 定义并将lazy-init 设置为 true 。

如果是后者,您可以org.springframework.beans.factory.config.BeanPostProcessor通过将父 bean 代理到无操作类来实现 a 来静音父 bean 的效果。实现此目的的另一种(非确定性)方法可能是将子 bean 命名为与父 bean 完全相同,然后检查日志以确认子 bean 定义已覆盖父 bean - 但是,这很容易出错你移动上下文导入。在SPR-3948中跟踪了春季豆类的确定性排序

于 2014-06-11T03:25:30.983 回答