En un proyecto en el que estoy trabajando, que está usando Spring, veo algo que realmente me deja boquiabierto. Al parecer, hay pruebas de unidad que necesitan los granos a trabajar y los granos se crean a partir de archivos XML, que contiene cosas como:Java: ¿es una buena práctica definir beans en 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>
Y qué fue así? El constructor de la clase ... ListDTO cambió y, por lo tanto, el bean aparentemente ya no puede crearse a partir de este (muy detallado en mi humilde opinión) XML.
¿Puede alguien explicarme por qué es una buena práctica (¿es realmente?) Poner tal cosa en un código XML en lugar de Java? Si estuviera en código Java, tan pronto como el ... ListDTO hubiera cambiado, la prueba unitaria se habría negado a compilar (incluso si la parte de la prueba de la unidad instanciando ese bean no se ejecutó [por alguna razón]).
Pregunta extra: ¿hay alguna manera de encontrar fácilmente todos estos "beans en XML" rotos en un proyecto además de ejecutar todas las pruebas unitarias, ver cuáles están fallando y luego enjuagar y repetir?
Para mí, parece un problema bastante serio que puede cambiar un constructor y que el IDE actuaría como si todo estuviera bien: ¿cuál es la justificación para esto? (*) Pregunta
(*) y la escritura: falsa constructor-arg> para 'falsa 'no parece una buena justificación para mí ... –
Gugussee