Вопрос проверяет понимание концепции сквозных задач и архитектурных преимуществ AOP.
AOP позволяет выносить сквозную логику из бизнес-кода.
Такая логика применяется автоматически к нужным методам.
Используются аспекты и pointcut-выражения.
Это упрощает поддержку и развитие приложения.
Spring активно использует AOP внутри фреймворка.
Сквозные задачи возникают практически в любом приложении.
Сквозная задача (cross-cutting concern) — это логика, которая затрагивает множество компонентов, но не относится к их основной ответственности.
Примеры:
логирование
метрики
безопасность
транзакции
AOP:
отделяет инфраструктурную логику
применяет её декларативно
не требует изменения бизнес-кода
аспект — класс со сквозной логикой
pointcut — описание точек применения
advice — код, выполняемый в нужный момент
@Around("execution(* com.app.service..*(..))")
public Object around(ProceedingJoinPoint pjp) throws Throwable {
// логирование / метрики
return pjp.proceed();
}
@Transactional
@Cacheable
@Async
Все эти аннотации реализованы через AOP.
AOP — ключевой механизм Spring для реализации сквозных задач и чистой архитектуры.