@feak дает прямой ответ о значении ApplicationContext
с точки зрения Spri нг. Короче говоря, это контекст, который загружает конфигурацию (обычно XML-файл), а затем Spring начнет управлять бобы и его преимуществом:
- Фасолью, объявленным в пакете
- Фасоли провозглашенной аннотаций (если эта конфигурация включен)
- Bean и метод автоматического связывания
- Bean инъекции
- Конфигурация .properties загрузки файлов
- и т.д.
Для запуска контекста приложения, вы можете использовать один из следующих вариантов:
вручную загрузить контекст приложения в начале вашего приложения. Это делается для целей образца или в отдельных приложениях:
public class Foo {
public static void main(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext("path/to/applicationContext.xml");
//use the context as you wish...
}
}
В случае веб-приложений на Java с помощью Spring MVC, то DispatchServlet
загружает контекст приложения для вас, поэтому вы должны только создать springapp-сервлет .xml файл в папке WEB-INF приложения.
Обратите внимание, что контекст приложение связано с одной конфигурации (XML на основе или нет). Период.
Понимая это, вы также понимаете, что для каждого приложения может быть более одного контекста приложения. Это, имея два или более ApplicationContext
с в одном приложении.Из последнего примера в консольном приложении, это легко проверить:
public class Foo {
public static void main(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext("path/to/applicationContext.xml");
ApplicationContext context2 =
new ClassPathXmlApplicationContext("path/to/applicationContext.xml");
//use the context as you wish...
}
}
Обратите внимание, что у нас есть два контекста приложения, используя ту же самую конфигурацию XML. Ты можешь сделать это? Да, вы на самом деле видите это здесь. В чем же разница? главного отличие состоит в том, что весна бобы одноэлементных прицелы одноточечно в контексте приложения, это значит при извлечении Bar
боба, который настроен в applicationContext.xml файл из context
не будет один и тем же как извлечение его из context2
, но несколько извлекает из context
будет возвращать тот же самый экземпляр bean Bar
.
Считается ли это хорошей или плохой практикой? Ни, это будет зависеть от проблемы, которая будет решена (в случае последнего примера я бы сказал, что это плохой практики). Большинство людей рекомендуют иметь все ваши компоненты в одном месте (через XML или другое) и загружаться одним контекстом приложения.
У меня нет возможности сделать это – homeAccount
@Shamse Я думаю, что homeAccount тоже понял это. Почему бы не ответить на вопрос, а появилось новое? – ozanmuyes