spring bean:好的XML 数据结构很多类?
spring bean: good XML data structure for many classes?
我正在使用 Java Spring Bean 进行演示。我有一个结构在applicationContext.xml。类似的东西:
<bean id="Transfer1" class="bank.Transfer">
<property name="id" value="1" />
<property name="firstname" value="Thomas" />
<property name="lastname" value="Bäcker" />
<property name="transferdate" value="2016-11-15" />
<property name="amount" value="300" />
</bean>
<bean id="Transfer2" class="bank.Transfer">
<property name="id" value="2" />
<property name="firstname" value="Bob" />
<property name="lastname" value="Sapp" />
<property name="transferdate" value="2016-12-01" />
<property name="amount" value="2700" />
</bean>
//
// followed by Transfer3, Transfer4...
//
我想知道是否有更好的解决方案,数据结构。可能是我可以将所有传输放在一个 Bean 中而不是一长串 Bean 中的东西。感谢任何建议!
其实你没有很多class。您有很多相同的实例 class...
您所做的并没有什么不好的,只是因为您需要 8 个相同的 class 实例,但仅用于演示。
如果您想将它们组合成一个 "holder" bean 作为集合(数组、列表、集合、映射...),您可以创建自己的 class(即 bank.AllTransfers
) 与 属性 作为任何集合(数组、列表、集合、映射)并定义另一个 bean,如
<bean id="allTransfers" class="bank.AllTransfers">
<property name="transfersCollection">
<list>
<ref bean="Transfer1"/>
<ref bean="Transfer2"/>
</list>
</property>
</bean>
另请查看 Spring Util 包(命名空间为 http://www.springframework.org/schema/util
)。有一堆元素可以在没有另一个包装器 bean 的情况下做同样的事情,比如:
<util:list name="transfersList" list-class="java.util.ArrayList" value-type="bank.Transfer">
<ref bean="Transfer1">
<ref bean="Transfer2">
</util:list>
在那种情况下,您将只有一个 class java.util.ArrayList
的 bean,您可以从另一个 bean 中引用,即
<bean id="allTransfers" class="bank.AllTransfers">
<property name="transfersCollection">
<ref bean="transfersList"/>
</property>
</bean>
对于这些示例,您必须保留 8 个 bean 定义 "as is"。
当然,您可以将它们放在 list
中,例如:
<bean id="allTransfers" class="bank.AllTransfers">
<property name="transfersCollection">
<list>
<bean id="Transfer1" class="bank.Transfer">
<property name="id" value="1" />
<property name="firstname" value="Thomas" />
...
</bean>
<bean id="Transfer2" class="bank.Transfer">
<property name="id" value="2" />
<property name="firstname" value="Bob" />
...
</bean>
</list>
</property>
</bean>
有很多很多的可能性...
PS。但是如果你仍然想在 Spring 上下文中保留你的 8 个 beans 构造(不是来自数据库,外部 .properties 文件......)你无论如何都必须定义它们。
我正在使用 Java Spring Bean 进行演示。我有一个结构在applicationContext.xml。类似的东西:
<bean id="Transfer1" class="bank.Transfer">
<property name="id" value="1" />
<property name="firstname" value="Thomas" />
<property name="lastname" value="Bäcker" />
<property name="transferdate" value="2016-11-15" />
<property name="amount" value="300" />
</bean>
<bean id="Transfer2" class="bank.Transfer">
<property name="id" value="2" />
<property name="firstname" value="Bob" />
<property name="lastname" value="Sapp" />
<property name="transferdate" value="2016-12-01" />
<property name="amount" value="2700" />
</bean>
//
// followed by Transfer3, Transfer4...
//
我想知道是否有更好的解决方案,数据结构。可能是我可以将所有传输放在一个 Bean 中而不是一长串 Bean 中的东西。感谢任何建议!
其实你没有很多class。您有很多相同的实例 class...
您所做的并没有什么不好的,只是因为您需要 8 个相同的 class 实例,但仅用于演示。
如果您想将它们组合成一个 "holder" bean 作为集合(数组、列表、集合、映射...),您可以创建自己的 class(即 bank.AllTransfers
) 与 属性 作为任何集合(数组、列表、集合、映射)并定义另一个 bean,如
<bean id="allTransfers" class="bank.AllTransfers">
<property name="transfersCollection">
<list>
<ref bean="Transfer1"/>
<ref bean="Transfer2"/>
</list>
</property>
</bean>
另请查看 Spring Util 包(命名空间为 http://www.springframework.org/schema/util
)。有一堆元素可以在没有另一个包装器 bean 的情况下做同样的事情,比如:
<util:list name="transfersList" list-class="java.util.ArrayList" value-type="bank.Transfer">
<ref bean="Transfer1">
<ref bean="Transfer2">
</util:list>
在那种情况下,您将只有一个 class java.util.ArrayList
的 bean,您可以从另一个 bean 中引用,即
<bean id="allTransfers" class="bank.AllTransfers">
<property name="transfersCollection">
<ref bean="transfersList"/>
</property>
</bean>
对于这些示例,您必须保留 8 个 bean 定义 "as is"。
当然,您可以将它们放在 list
中,例如:
<bean id="allTransfers" class="bank.AllTransfers">
<property name="transfersCollection">
<list>
<bean id="Transfer1" class="bank.Transfer">
<property name="id" value="1" />
<property name="firstname" value="Thomas" />
...
</bean>
<bean id="Transfer2" class="bank.Transfer">
<property name="id" value="2" />
<property name="firstname" value="Bob" />
...
</bean>
</list>
</property>
</bean>
有很多很多的可能性...
PS。但是如果你仍然想在 Spring 上下文中保留你的 8 个 beans 构造(不是来自数据库,外部 .properties 文件......)你无论如何都必须定义它们。