【问题标题】:Override a spring bean which already has an alias覆盖已经有别名的spring bean
【发布时间】:2022-07-19 07:30:13
【问题描述】:

我在无法更改或控制的代码上声明了一个 spring bean,它是这样声明的:

    <alias name="defaultRemoveSheetsDecorator" alias="removeSheetsDecorator"/>
    <bean id="defaultRemoveSheetsDecorator"
          class="com.hybris.backoffice.excel.exporting.RemoveSheetsDecorator">
        <property name="sheetsToRemove">
            <list>
                <value type="com.hybris.backoffice.excel.template.ExcelTemplateConstants$UtilitySheet">
                    PK
                </value>
            </list>
        </property>
    </bean>

我试图像这样覆盖它:

    <alias name="myRemoveSheetsDecorator" alias="removeSheetsDecorator" />
    <bean id="myRemoveSheetsDecorator"
          class="com.mypackage.MyRemoveSheetDecorator" parent="defaultRemoveSheetsDecorator">
        <property name="sheetsToRemove">
            <list>
                <value type="com.hybris.backoffice.excel.template.ExcelTemplateConstants$UtilitySheet">
                    PK
                </value>
            </list>
        </property>
    </bean>

但由于某种原因,当我得到 bean removeSheetsDecorator 并使用 getClass() 检查它的类时,它仍然指向原始 bean ??

【问题讨论】:

  • 你能澄清你想要做什么吗?我首先阅读的方式是,您有一个具有指定名称的 bean,但您希望能够使用别名引用该 bean(可能用于自动装配限定符)。根据您的最终声明,您似乎想要一个 bean 的副本(使用新名称)。
  • 有一个 bean 定义了 OOTB removeSheetsDecorator 并在多个地方使用,我正在尝试用我的自定义 bean 扩展/覆盖

标签: java spring sap-commerce-cloud


【解决方案1】:

看起来像父母造成的问题。

  <alias name="myRemoveSheetsDecorator" alias="removeSheetsDecorator" />
<bean id="myRemoveSheetsDecorator"
      class="com.mypackage.MyRemoveSheetDecorator" >
    <property name="sheetsToRemove">
        <list>
            <value type="com.hybris.backoffice.excel.template.ExcelTemplateConstants$UtilitySheet">
                PK
            </value>
        </list>
    </property>
</bean>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-26
    • 1970-01-01
    • 2020-08-07
    • 2017-07-22
    • 1970-01-01
    • 2023-01-25
    • 1970-01-01
    • 2019-04-05
    相关资源
    最近更新 更多