2014-11-13 2 views
0

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

<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

Возможно, файл 'Beans.xml' ** является ** БД? Или ты должен так думать об этом? Я не уверен (я начинаю с весны). – ajb

ответ

0

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

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

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

+0

Позвольте мне быть более явным. посмотри на мой вопрос сейчас и посмотри на фасоль, которую я положил туда. конструкторы args имеют значения. теперь, если бы я захотел заменить их аннотацией @Resource, где бы я тогда поместил значения? –

+0

Я не понимаю, как это относится к вашему OP. Использование различных типов инъекций зависимостей не имеет отношения к XML, являющемуся внешним источником данных, и, следовательно, не к жесткому кодированию. Точка с аргументами конструктора XML состоит в том, что вы можете изменить значение в XML и перезагрузить компонент (либо перезапустить, либо каким-либо другим способом), и вам не нужно перекомпилировать ваш код. Изменение этого для использования аннотаций @Resource - это изменение кода ... сорта, яблок и апельсинов. –

+0

@RedBaron Используйте выражение SpEL для значения. – chrylis

 Смежные вопросы

  • Нет связанных вопросов^_^