有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaSpring:如何在列表中使用listMergeDirective删除bean引用

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

我还检查了spring中的ListMergeDirective类,没有可用的删除功能

一种方法是通过使用#do nothing()删除所有代码并使用别名删除来覆盖现有类。但这最终会造成创建新类的开销

我们如何仅使用bean删除引用


共 (1) 个答案

  1. # 1 楼答案

    AFAIK该功能是在1811年版本中引入的。新的ListMergeDirective使用remove属性进行了增强。从那时起,我通常的解决方法是覆盖bean(仅),并从零开始提供一组新的后处理器挂钩