Этап 1 из 10 · ≈ 6 ч

AOP и прокси

Основа с Middle

Аспекты, JDK и CGLIB прокси и почему не работает вызов @Transactional изнутри класса.

Что важно знать

  • Транзакции, кэш, безопасность, асинхронность — через прокси.
  • Самовызов внутри класса идёт мимо прокси — аннотация не работает.
  • Прокси не работают с private и final методами.

Критерии освоения

Middle ≈ 6 ч

  • Объясняет, как Spring создаёт прокси и чем JDK-прокси отличается от CGLIB
  • Объясняет, почему самовызов обходит @Transactional и @Cacheable
  • Пишет аспект для сквозной логики (замер времени, аудит)

Практика. Воспроизвести самовызов метода с @Transactional, показать, что транзакции нет, и исправить.

Проверка знаний

Войдите, чтобы пройти тест: сданный тест отмечает тему пройденной на карте и в ИПР.

Вопросы с собеседований

Смотреть все
Какую задачу решает AOP?Junior

AOP выносит сквозную функциональность — транзакции, логирование, безопасность, метрики, кэширование — из бизнес-методов в аспекты. Метод содержит только бизнес-логику.

Полный разбор
Что такое AOP в Spring и его ключевые понятия?Middle

AOP выносит сквозную функциональность (транзакции, безопасность, логирование, метрики) из бизнес-кода в аспекты. Advice — что и когда выполнить; pointcut — где; join point — конкретная точка (в Spring — вызов метода).

Полный разбор
Какие виды advice существуют в Spring AOP?Middle

@Before — до метода, @AfterReturning — после успешного возврата, @AfterThrowing — после исключения, @After — в любом случае (как finally), @Around — вокруг, с вызовом proceed().

Полный разбор
Какие ограничения есть у Spring AOP из-за того, что он основан на прокси?Middle

Spring AOP на прокси перехватывает только внешние вызовы публичных методов бинов: не работает self-invocation, private-методы, final-методы и классы при CGLIB, объекты не из контейнера, поля.

Полный разбор
Когда Spring создаёт JDK dynamic proxy, а когда CGLIB-прокси?Middle

JDK dynamic proxy — реализует интерфейсы бина, перехватывает только методы интерфейсов. CGLIB — подкласс бина, работает без интерфейсов. Spring Boot по умолчанию включает CGLIB (proxyTargetClass=true).

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

Разборы темы

← Вся карта «Spring»

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования