假设我在spring.xml文件中定义了一个列表。
<util:list id="addToCartMethodHooks"
value-type="com.test.AddToCartMethodHook"/>
其中AddToCartMethodHook
是一个接口,其目的是灵活地创建任意数量的实现此接口的类并将该bean挂钩到列表中。
我们可以使用listMergeDirective
在需要的地方添加新的bean定义。
<bean id="customAddToCartMethodHook" class="com.test.CustomAddToCartMethodHook" />
<bean id="customAddToCartMethodHookMergeDirective" depends-on="addToCartMethodHooks" parent="listMergeDirective">
<property name="add" ref="customAddToCartMethodHook"/>
</bean>
假设我想通过删除一些现有的bean引用来覆盖列表引用。 有没有办法可以使用listMergeDirective删除bean引用?
我在春天也检查了ListMergeDirective
类,没有可用的删除功能。
一种方法是使用#do nothing()
删除所有代码并使用别名删除来覆盖现有类。但这最终会产生创建新类的开销。
我们如何才能仅使用bean删除引用?
答案 0 :(得分:0)
AFAIK此功能在1811版本中引入。新的ListMergeDirective
通过remove
属性得到了增强。从那时起,我通常的解决方法是重写bean(仅),并提供从零开始的一组新的后处理器挂钩。