2011-01-25 99 views
5

在我正在使用的一个项目中,使用Spring的时候,我看到一些令我头脑发热的东西。显然,有需要豆类工作单元测试和那些豆都是从XML文件创建,包含类似的事情:Java:在XML中定义bean是否是一种好的做法?

<bean class="...ListDTO"> 
<constructor-arg> 
    <map> 
    <entry key="use1key"> 
    <value>use1value</value> 
    </entry> 
    <entry key="use2key"> 
    <value>use2value</value> 
    </entry> 
    </map> 
</constructor-arg> 
<constructor-arg> 
    <map> 
    <entry key="nature1key"> 
    <value>nature1value</value> 
    </entry> 
    <entry key="nature2key"> 
    <value>nature2value</value> 
    </entry> 
    </map> 
</constructor-arg> 
<constructor-arg> 
    <value>false</value> 
</constructor-arg> 
</bean> 

,什么也发生?类的构造函数... ListDTO发生了变化,因此显然不能从此(非常详细的恕我直言)XML创建该bean。

有人可以解释我为什么是个好习惯(是不是真的?)把这样的事情在一个XML而不是Java代码?如果它是在Java代码中,只要ListDTO改变了,单元测试就会拒绝编译(即使单元测试实例化这个bean的部分没有被执行[无论出于何种原因])。

奖金的问题:是否有方法可以轻松地找到所有这些破“在XML豆”中的一个项目,除了运行所有的单元测试,看看哪些是失败的,然后冲洗和重复的?

对我来说,似乎是一个很严重的问题,你可以改变一个构造函数和,仿佛一切都很好的IDE将采取行动:究竟是什么理由? (*)

+0

(*)和写作:<构造带参数>为“假'对我来说看起来不是一个很好的理由...... – Gugussee 2011-01-25 14:43:34

回答

6

这背后的想法是,你让事情,在中央XML配置文件环境(开发,测试,生产)之间的差异,并通过使用不同的配置文件,您可以切换环境。

但是,这绝对不是用bean的配置,定义复杂的测试数据结构很好的做法。有人可能会这样做,而新的倾向于依赖注入,只是因为它是可能的。

+0

+1 ...所以可以在中央XML配置文件中保留需要“可移植”的内容,而不使用bean来定义复杂的测试数据结构? – Gugussee 2011-01-25 15:27:49

1

红利问题:有没有一种方法可以轻松地在项目中找到所有这些破坏的“XML in XML”,除了运行所有的单元测试,看看哪些失败,然后漂洗和重复?

Spring Tool Suite或Eclipse的Spring插件可以检查弹簧配置文件是否正确(具有所有构造函数参数并且不使用未知的setter)。

+0

+1,太棒了......我会尽量习惯可以验证Spring配置文件的Eclipse/Spring Too Suite工具。 – Gugussee 2011-01-25 15:28:35

相关问题