Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:用XML定义bean是一种好做法吗?_Java_Xml_Unit Testing_Javabeans - Fatal编程技术网

Java:用XML定义bean是一种好做法吗?

Java:用XML定义bean是一种好做法吗?,java,xml,unit-testing,javabeans,Java,Xml,Unit Testing,Javabeans,在我正在进行的一个使用Spring的项目中,我看到了一些让我非常困惑的东西。显然,有些单元测试需要bean才能工作,这些bean是从XML文件创建的,包含以下内容: <bean class="...ListDTO"> <constructor-arg> <map> <entry key="use1key"> <value>use1value</value> </entry> <

在我正在进行的一个使用Spring的项目中,我看到了一些让我非常困惑的东西。显然,有些单元测试需要bean才能工作,这些bean是从XML文件创建的,包含以下内容:

<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>

使用1值
use2value
性质1值
nature2value
假的
发生了什么事?类的构造函数…ListDTO已更改,因此显然无法再从这个(非常详细的IMHO)XML创建bean

有人能解释一下,为什么将这种东西放在XML而不是Java代码中是一种好的做法(真的吗?)?如果它是在Java代码中,那么一旦…ListDTO发生了更改,单元测试就会拒绝编译(即使单元测试中实例化该bean的部分[出于任何原因]没有得到执行)

附加问题:除了运行所有的单元测试,看看哪些单元测试失败,然后冲洗和重复,还有什么方法可以轻松地在项目中找到所有这些“XML中的bean”吗

对我来说,这似乎是一个相当严重的问题,你可以改变一个构造函数,IDE会表现得好像一切都很好:这样做的理由是什么?(*)

附加问题:除了运行所有的单元测试,看看哪些单元测试失败,然后冲洗和重复,还有什么方法可以轻松地在项目中找到所有这些“XML中的bean”吗


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

这背后的思想是,您可以将不同环境(开发、测试、生产)的内容保留在一个中央XML配置文件中,通过使用不同的配置文件,您可以切换环境


然而,使用bean配置来定义复杂的测试数据结构肯定不是一个好的实践。有人可能是在最近迷恋依赖注入时做的,因为这是可能的。

我认为在使用Spring时应该使用SpringSource工具。您可以将其作为单机版或Eclipse插件下载:


(*)并写道:false代表“false”,在我看来并不是一个很好的理由…+1。。。因此,在不使用bean定义复杂的测试数据结构的情况下,可以将需要“可移植”的内容保存在中心XML配置文件中,对吗?@Gugussee:是的。大多数依赖项注入都应该通过注释(特别是自动连接)来定义,XML配置应该是精简的,并且只包含在所有配置中存在和不同的内容。+1,很好。。。我将尝试使用Eclipse/Spring套件工具来验证Spring配置文件。