Неуверен в концепции аргументов конструктора в бобах весны
После просмотра различных уроков и прочтения я понимаю, как использовать аргументы конструктора весной. нет проблем там. моя проблема в том, может ли кто-то объяснить или указать мне какой-то материал, где объясняется ПОЧЕМУ они используются. что я имею в виду под этим синтаксисом: <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, вам не нужно перекомпилировать код, чтобы он работал.