В проекте, над которым я работаю, в котором используется 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>
А что случилось? Конструктор класса ... ListDTO изменился, и, следовательно, bean, очевидно, больше не может быть создан из этого (очень многословного IMHO) XML.
Может кто-нибудь объяснить мне, почему это хорошая практика (правда ли?) Помещать такие вещи в XML вместо кода Java? Если бы это было в Java-коде, как только ... ListDTO изменил бы, модульный тест отказался бы компилироваться (даже если часть модульного теста, создающая экземпляр этого компонента, не была выполнена [по какой-либо причине]).
Дополнительный вопрос: есть ли способ легко найти все эти сломанные "bean-компоненты в XML" в проекте, кроме выполнения всех модульных тестов, посмотреть, какие из них не пройдены, а затем промыть и повторить?
Мне кажется довольно серьезной проблемой то, что вы можете изменить конструктор и что среда IDE будет действовать так, как будто все в порядке: что является оправданием для этого? (*)