Вы можете использовать абстрактные определения bean-компонентов в качестве шаблонов, чтобы уменьшить дублирование. Например:
<bean id="parent" abstract="true">
<constructor-arg value="ARG0"/>
<property name="propertyA" value="A"/>
<property name="propertyB" value="B"/>
<property name="propertyC" ref="beanC"/>
</bean>
<bean id="child1" class="SomeClass" parent="parent">
<property name="propertyD" value="D1"/>
</bean>
<bean id="child2" class="SomeOtherClass" parent="parent">
<property name="propertyD" value="D2"/>
</bean>
Бины "child1" и "child2" будут совместно использовать значения из "parent" для arg0, "propertyA", "propertyB" и "propertyC" и все еще смогут настраивать свои собственные значения для "propertyD".
Обратите внимание, что у "parent" нет класса, и, следовательно, его нельзя создать. Также обратите внимание, что «child1» и «child2» могут быть потомками одного и того же определения абстрактного компонента, будучи совершенно разными классами - эта иерархия не имеет ничего общего с иерархией классов.