Ответ
IoC-контейнер (Inversion of Control) — это ядро Spring Framework, которое существует в памяти приложения во время его выполнения. Он не имеет фиксированного "места" в файловой системе, а представляет собой объект в JVM, отвечающий за создание, конфигурацию и управление жизненным циклом бинов (beans).
Основные реализации интерфейсов контейнера:
BeanFactory— базовый, легковесный контейнер, предоставляющий фундаментальные возможности DI.ApplicationContext— расширенный, полнофункциональный контейнер, который наследуетBeanFactoryи добавляет:- Упрощенную интеграцию с AOP (Aspect-Oriented Programming).
- Управление событиями (Event Publication).
- Интернационализацию (i18n).
- Загрузку ресурсов (Resource Loading).
- Декларативное создание контекста.
Практическое создание контейнера:
// Для XML-конфигурации
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
// Для Java-based конфигурации (аннотации)
ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
В Spring Boot контейнер ApplicationContext создается и запускается автоматически методом SpringApplication.run(). Контейнер "живет" от старта приложения до его завершения, храня все управляемые бины в куче (Heap).