如何排除从父项目导入的bean?

时间:2014-06-11 02:00:19

标签: java spring spring-bean

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

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

我是否只在子项目中排除特定的bean?

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

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

在子项目中,我希望能够在我的xml中执行与此类似的操作。子项目根本不需要这个bean。

<exclude beanid="example" />

1 个答案:

答案 0 :(得分:0)

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

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

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

中跟踪春季豆的确定性排序