Я задал общий вопрос Spring: Авто-литье Spring Beans, и несколько человек ответили, что вызов Spring ApplicationContext.getBean()
должен быть избегать как можно больше. Почему это?
Как еще мне получить доступ к beans я настроенному Spring для создания?
Я использую Spring в не-веб-приложении и планировал доступ к общему объекту ApplicationContext
как описано LiorH.
Поправка
Я принимаю ответ ниже, но здесь альтернативный подход Мартина Фаулера, который обсуждает достоинства Dependency Injection против использования Locator ( который по существу совпадает с вызовом wrapped ApplicationContext.getBean()
).
В частности, Fowler утверждает: "С помощью локатора сервисов класс приложения запрашивает его [услугу] явно сообщением локатору. При инъекции явного запроса нет, служба появляется в классе приложения - следовательно, инверсия контроля. Инверсия контроля является общей чертой фреймворков, но это то, что приходит по цене. Это, как правило, трудно понять и приводит к проблемам при попытке отладки. Поэтому в целом я предпочитаю избегать этого [Inversion of Control], если только это не понадобится. Это не значит, что это плохо, просто я считаю, что нужно оправдываться более простой альтернативой ".