Как устроены lifecycle bean и проксирование в Spring? Какие механизмы прокси используются?

В типичном жизненном цикле bean создаётся, получает зависимости, проходит post-processors и init callbacks, после чего может быть выдан как прокси. Spring AOP использует JDK dynamic proxy либо class-based CGLIB proxy.

Короткий ответ

Что ответить на собеседовании

В типичном жизненном цикле bean создаётся, получает зависимости, проходит post-processors и init callbacks, после чего может быть выдан как прокси. Spring AOP использует JDK dynamic proxy либо class-based CGLIB proxy.

Подробный разбор

Ответ с пояснениями

В типичном жизненном цикле bean создаётся, получает зависимости, проходит post-processors и init callbacks, после чего может быть выдан как прокси. Spring AOP использует JDK dynamic proxy либо class-based CGLIB proxy.

JDK proxy представляет интерфейсы, CGLIB создаёт подкласс; final-методы не перехватываются переопределением, private-вызовы также не становятся обычными proxy-вызовами. Точный порядок зависит от расширений контейнера, поэтому это не универсальная схема для каждого bean. Вызов через this обходит внешний прокси, а init callback обычно нельзя считать полноценным внешним AOP-вызовом. При закрытии контейнера вызываются поддерживаемые destroy callbacks.

Источник: github.com.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее