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