Ответ
Spring взаимодействует с POJO, превращая их в бины (beans) — управляемые объекты внутри IoC-контейнера. Контейнер отвечает за их создание, настройку зависимостей и управление жизненным циклом.
Основные способы взаимодействия:
-
Dependency Injection (Внедрение зависимостей): Spring автоматически предоставляет зависимости бину.
@Service // Помечает класс как бин, управляемый Spring public class OrderService { // Внедрение через конструктор (рекомендуемый способ) private final PaymentProcessor processor; public OrderService(PaymentProcessor processor) { this.processor = processor; // Spring находит и передает нужный бин } } -
Управление жизненным циклом через Scope: Spring контролирует, сколько экземпляров бина создается.
singleton(по умолчанию): Один экземпляр на контейнер.prototype: Новый экземпляр при каждом запросе.request,session(для веб): Экземпляр на HTTP-запрос или сессию.
-
Аспектно-ориентированное программирование (AOP): Spring динамически создает прокси-объекты вокруг ваших бинов, чтобы добавлять сквозную логику (cross-cutting concerns).
@Service public class BusinessService { @Transactional // Spring создает прокси, который управляет транзакцией public void performOperation() { // ... бизнес-логика } }Почему это работает? Контейнер Spring создает и хранит «мешок» бинов (
ApplicationContext). Когда вам нужен объект, вы не используетеnew, а запрашиваете его у контейнера (через DI,@Autowiredилиcontext.getBean()), который возвращает полностью настроенный экземпляр со всеми внедренными зависимостями.