我有一个包含来自父项目的spring xml配置的项目。
我不需要父项目中的xml文件中定义的特定bean,但我不想修改父项目。我也不想重写一整套xml文件。
我是否只在子项目中排除特定的bean?
让我更具体一点。父项目有一个bean(例如)
<bean id = "example" class = "blah />
在子项目中,我希望能够在我的xml中执行与此类似的操作。子项目根本不需要这个bean。
<exclude beanid="example" />
答案 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