Аннотации становятся популярными. Spring -3 поддерживает их. CDI сильно зависит от них (я не могу использовать CDI без аннотаций, не так ли?)
Мой вопрос: почему?
Я слышал несколько вопросов:
-
"Это помогает избавиться от XML". Но что плохого в xml? Зависимости являются декларативными по своей природе, а XML очень хорош для деклараций (и очень плохо для императивного программирования). С хорошей IDE (например, идея) очень легко редактировать и проверять xml, не так ли?
-
"Во многих случаях для каждого интерфейса существует только одна реализация". Это неправда! Почти все интерфейсы в моей системе имеют макетную реализацию для тестов.
Любые другие проблемы?
И теперь мои плюсы для XML:
-
Вы можете вставлять что угодно где угодно (не только код с аннотациями)
-
Что делать, если у меня есть несколько реализаций одного интерфейса? Использовать квалификаторы? Но это заставляет мой класс знать, какая инъекция ему нужна. Это плохо для дизайна.
XML, основанный на DI, делает мой код понятным: каждый класс не имеет понятия об инъекции, поэтому я могу его настроить и полностью протестировать.
Как вы думаете?