Spring:如何使用列表中的listMergeDirective删除bean引用

问题描述 投票:1回答:1

假设我在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删除引用?

java spring spring-mvc
1个回答
0
投票

AFAIK此功能于1811年推出。新的ListMergeDirective增强了remove财产。从那时起,我所做的通常的解决方法是覆盖bean(仅)并从零开始提供一组新的后处理器挂钩。

© www.soinside.com 2019 - 2024. All rights reserved.