gpt4 book ai didi

java - 如何减少 Spring 应用程序上下文中的重复

转载 作者:行者123 更新时间:2023-12-01 17:32:52 24 4
gpt4 key购买 nike

我创建了一些 bean,它们都使用类似的模式进行 bean 实例化。顶级对象都非常相似,但它们包含的对象因字符串构造函数参数而异。除了两个 THIS CHANGES A 实例和一个 THIS CHANGES B 实例之外,每个顶级 bean 中的所有内容都是相同的。下面是我的一颗 bean 。除了 THIS CHANGES 值之外,其他完全相同。

<bean id="mover1" class="CustomDataMover">
<constructor-arg ref="session"/>
<constructor-arg>
<bean class="DataCache">
<constructor-arg>
<bean class="AllValuesReader">
<constructor-arg ref="databaseConnector"/>
<constructor-arg value="THIS CHANGES A"/>
<constructor-arg value="v1"/>
<constructor-arg value="v2"/>
</bean>
</constructor-arg>
</bean>
</constructor-arg>
<constructor-arg ref="customUpdate"/>
<constructor-arg value="THIS CHANGES B"/>
<constructor-arg>
<bean class="ValueGenerator">
<constructor-arg>
<bean class="LatestValueRetriever">
<constructor-arg ref="databaseConnector"/>
<constructor-arg value="v3"/>
<constructor-arg value="v4"/>
<constructor-arg value="THIS CHANGES A"/>
</bean>
</constructor-arg>
</bean>
</constructor-arg>
</bean>

如何减少 Bean 中的重复量?我正在寻找某种方法来制作某种模板。另外,请注意,我确实引用了其他 bean。

最佳答案

您可以使用抽象 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>

Bean“child1”和“child2”将共享来自“parent”的 arg0、“propertyA”、“propertyB”和“propertyC”值,并且仍然能够为“propertyD”配置自己的值。

请注意,“parent”没有类,因此无法实例化。另请注意,“child1”和“child2”可以是同一抽象 bean 定义的子级,但它们是完全不同的类 - 此层次结构与类层次结构无关。

关于java - 如何减少 Spring 应用程序上下文中的重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9314836/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com