Я задал общий вопрос Spring: Auto-cast Spring Beans , и несколько человек ответили, что вызова Spring'а ApplicationContext.getBean()
следует избегать, насколько это возможно. Это почему?
Как еще мне получить доступ к bean-компонентам, которые я настроил для создания Spring?
Я использую Spring в не-веб-приложении и планировал доступ к общему ApplicationContext
объекту , как описано LiorH .
Поправка
Я принимаю ответ ниже, но вот альтернативный вариант Мартина Фаулера, который обсуждает преимущества внедрения зависимостей по сравнению с использованием локатора служб (что по сути то же самое, что вызов свернутого ApplicationContext.getBean()
) .
В частности, Фаулер заявляет: « С помощью локатора службы класс приложения запрашивает его [службу] явным образом посредством сообщения локатору. При внедрении явный запрос отсутствует, служба появляется в классе приложения - отсюда и инверсия контроля.
Инверсия контроля - это общая черта фреймворков, но это то, что имеет свою цену. Как правило, это трудно понять и приводит к проблемам при попытке отладки. В общем, я предпочитаю избегать этого [инверсии контроля], если мне это не нужно. Это не значит, что это плохо, просто я думаю, что нужно оправдать себя более простой альтернативой."