Ответ
Сначала создается ApplicationContext. Он является контейнером, который загружает конфигурацию (XML, аннотации, JavaConfig), анализирует её и затем инстанцирует бины, управляя их жизненным циклом и внедрением зависимостей. Без контекста бины не могут быть созданы.
Почему так? Контекст — это "фабрика" и "менеджер" бинов. Он должен существовать, чтобы прочитать их определения и создать экземпляры.
Пример на JavaConfig:
@Configuration
public class AppConfig {
@Bean
public MyService myService() {
return new MyServiceImpl();
}
}
// 1. Создание контекста (запускает процесс создания бинов)
ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class);
// 2. Получение готового бина из контекста
MyService service = ctx.getBean(MyService.class);