В Spring, что создается раньше: ApplicationContext или бины?

«В Spring, что создается раньше: ApplicationContext или бины?» — вопрос из категории Spring, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Сначала создается 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);