Весенние аннотации основной вопрос - PullRequest
3 голосов
/ 22 июля 2011

Насколько я понимаю, основная цель внедрения зависимостей состоит в том, чтобы разделить все зависимости декларативно, чтобы мы могли легко просматривать и изменять структуру зависимостей ... правильно?

Затем с помощью аннотаций зависимостейНеужели мы просто не вернемся к нецентрализованной системе (похожей на простой новый оператор), которую сложнее настроить?

Ответы [ 3 ]

2 голосов
/ 22 июля 2011

@Autowired / @Inject аннотации обычно объявляют зависимости от интерфейсов, а не от конкретных классов (как в случае new), таким образом, вы все еще можете контролировать, какие реализации следует внедрять, контролируя, какие bean-компоненты объявлены в контекст. Кроме того, эти зависимости могут быть переопределены вручную.

@Component - также можно управлять аннотациями семейства, поскольку вы можете исключить определенные классы из сканирования компонентов.

0 голосов
/ 22 июля 2011

Эти типы дискуссий имеют тенденцию становиться религиозными, поэтому я буду избегать определения «главной цели» и семантики того, действительно ли тот или иной шаблон действительно и действительно выполняется.

Я стараюсь смотреть на это как на инструмент, который может предложить определенные функции. Например, использование Spring (DI) является хорошим способом разделения интерфейсов и реализаций. Пользователям определенного интерфейса не нужно знать, как создать реализацию (или где она находится). Это часто что-то хорошее. Использование Spring также предоставляет множество других возможностей: функции, управляемые AOP и AOP, такие как обработка транзакций, область действия и целый ряд готовых интеграций с другими средами и технологиями. Аннотации делают это проще, понятнее и лучше всего, мне не нужно их использовать там, где это не практично или невозможно - всегда есть возможность сконфигурировать его в XML.

0 голосов
/ 22 июля 2011

Цель внедрения зависимости состоит в том, чтобы отделить объявление зависимостей от фактического удовлетворения этих зависимостей. Как делается декларация - вопрос ортогональный.

@Autowired является формой объявления зависимостей. Использование @Autowired поддерживает инкапсуляцию. Внедренные зависимости класса документируются непосредственно в коде, а не в другом файле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...