Ответ
Центральным компонентом Spring является IoC (Inversion of Control) контейнер, также известный как Application Context. Он отвечает за создание, конфигурацию и управление жизненным циклом объектов (бинов), а также за внедрение их зависимостей (Dependency Injection).
Ключевые интерфейсы:
BeanFactory— базовая функциональность контейнера.ApplicationContext— расширяетBeanFactory, добавляя интеграцию с AOP, международализацию, публикацию событий и многое другое. Это основной интерфейс, используемый в приложениях.
Пример создания контекста:
// Современный подход через аннотации (Java Config)
AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext(AppConfig.class);
MyService service = context.getBean(MyService.class);
service.execute();
Что делает контейнер:
- Инверсия управления: Контейнер управляет созданием бинов, а не разработчик через
new. - Внедрение зависимостей: Автоматически разрешает и внедряет зависимости между бинами (через конструктор, сеттеры или поля).
- Управление областью видимости (Scope): Поддерживает
singleton,prototype,request,sessionи другие. - Конфигурация: Позволяет настраивать бины через аннотации (
@Component,@Autowired), Java-код или XML.
Без IoC-контейнера Spring теряет свою основную ценность — декларативный стиль разработки и слабую связанность компонентов.