Search code examples
springsap-commerce-cloud

How to override the bean definition in spring XML bean definition


I want to oveerride the bean definition of below one.

<bean id="productPrimaryImagePopulator" parent="defaultProductPrimaryImagePopulator">
    <property name="imageFormatMapping" ref="imageFormatMapping"/>
    <property name="imageFormats">
        <list>
            <value>zoom</value>
            <value>product</value>
            <value>thumbnail</value>
            <value>cartIcon</value>
        </list>
    </property>
</bean>

To new one like below in new occ extension.

<bean id="productPrimaryImagePopulator" parent="defaultProductPrimaryImagePopulator">
    <property name="imageFormatMapping" ref="imageFormatMapping"/>
    <property name="imageFormats">
        <list>
            <value>sampleProduct</value>
        </list>
    </property>
</bean>

Can you please guide me how can we do this?


Solution

  • If you want to override the OOB populator, you can try spring-related bean declaration and changes.

    <bean id="testImageFormatMapping" parent="defaultImageFormatMapping">
        <property name="mapping">
            <map>
                <entry key="superZoom" value="1200Wx1200H"/>
                <entry key="zoom" value="515Wx515H"/>
                <entry key="store" value="365Wx246H"/>
                <entry key="product" value="300Wx300H"/>
                <entry key="thumbnail" value="96Wx96H"/>
                <entry key="cartIcon" value="65Wx65H"/>
                <entry key="styleSwatch" value="30Wx30H"/>
            </map>
        </property>
    </bean>
    
    <bean id="testProductPrimaryImagePopulator" parent="defaultProductPrimaryImagePopulator">
        <property name="imageFormatMapping" ref="testImageFormatMapping"/>
        <property name="imageFormats">
            <list>
                <value>zoom</value>
                <value>product</value>
                <value>thumbnail</value>
                <value>cartIcon</value>
            </list>
        </property>
    </bean>
    
    <bean id="testProductGalleryImagesPopulator" parent="defaultProductGalleryImagesPopulator">
        <property name="imageFormatMapping" ref="testImageFormatMapping"/>
        <property name="imageFormats">
            <list>
                <value>zoom</value>
                <value>product</value>
                <value>thumbnail</value>
            </list>
        </property>
    </bean>
    
    <bean id="testProductPopulator"
            parent="defaultProductPopulator">
        <property name="productPrimaryImagePopulator" ref="testProductPrimaryImagePopulator"/>
        <property name="productModelUrlResolver" ref="testcommercewebservicesProductModelUrlResolver"/>
    </bean>
    
    <bean id="testProductConverter" parent="defaultProductConverter">
        <property name="populators">
            <list>
                <ref bean="testProductPopulator"/>
            </list>
        </property>
    </bean>