Получить доступ

Какую задачу решает AOP?

JuniorAOP и проксиSpring
Ещё спрашивают так:
  • Зачем нужно аспектно-ориентированное программирование?
Коротко

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

  • В Spring реализовано прокси вокруг бинов
  • @Transactional, @Cacheable, @Async — примеры аспектов
  • Свой аспект — @Aspect с advice и pointcut

А ещё Ограничение — внутренние вызовы мимо прокси

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

Сквозной называют функциональность, которая нужна во множестве мест и не относится к предметной области, — если писать её руками, она размажется по всему коду и будет дублироваться. Аспект описывает, что делать и где применять, а фреймворк подставляет это при вызове. Именно на этом механизме построены @Transactional, @Cacheable и @Async. Ключевая техническая деталь для понимания: Spring оборачивает бин в прокси, поэтому перехватываются только вызовы, приходящие снаружи.

Что хотят услышать

  • Сквозная функциональность и пример.

Частые ошибки

  • Ожидать перехвата при вызове метода изнутри того же класса.
  • Складывать в аспекты бизнес-логику.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Выносит сквозную функциональность — логирование, транзакции, кэширование — из бизнес-кода в отдельные аспекты
  • ✗Ускоряет выполнение методов за счёт кэширования байткода
  • ✗Позволяет вызывать методы удалённых сервисов как локальные
  • ✗Заменяет наследование при построении иерархий классов

Что спросят дальше

  • Почему @Transactional не работает при вызове изнутри класса?
  • Какие виды advice существуют?

Разбор темы

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем