Неуверен в концепции аргументов конструктора в бобах весны

После просмотра различных уроков и прочтения я понимаю, как использовать аргументы конструктора весной. нет проблем там. моя проблема в том, может ли кто-то объяснить или указать мне какой-то материал, где объясняется ПОЧЕМУ они используются. что я имею в виду под этим синтаксисом: <constructor-arg value="threading"></constructor-arg>, жестко закодированное значение - плохая практика? Я не хочу никаких статей о весне относительно того, как это сделать. Мне просто нужен простой ответ, чтобы объяснить, почему жесткое кодирование здесь вроде бы хорошо ИЛИ лучшие решения. Я знаю аннотацию @Resource, которая избавляет от необходимости таких строк, как <property name="answer" ref="answer"></property> но меня всегда учили жесткому кодированию - это плохая идея, и, например, вытащить из БД лучшее решение

<bean id="questions" class="main.Questions">
        <constructor-arg value="0000"></constructor-arg>
        <constructor-arg value="What is the question?"></constructor-arg>
        <constructor-arg value="threading"></constructor-arg>
        <property name="correctAnswer" value="deadlock"></property>

</bean>

1 ответ

Это не сложное кодирование... Мне понадобилось немного времени, чтобы понять, что вы имели в виду, но посмотрите эту статью вики:

http://en.wikipedia.org/wiki/Hard_coding

Вы не жестко программируете, предоставляя значения внедрения конструктора / свойства как литералы в XML, потому что XML служит внешним источником данных. Практически это ничем не отличается от значения в поле в БД где-то. Если вы измените его в XML, вам не нужно перекомпилировать код, чтобы он работал.

Другие вопросы по тегам