tgoop.com/Java_Iibrary/1780
Last Update:
Ваша бизнес-логика должна быть чистой. Но сквозные задачи, такие как логирование и безопасность, быстро её загромождают.
Как это исправить?
Вот как:
Spring AOP (аспектно-ориентированное программирование) позволяет отделить сквозные задачи —> логирование, транзакции, безопасность от бизнес-логики.
Aspect = задача/область заботы
Advice = действие (@Before, @AfterReturning, @AfterThrowing, @After, @Around
)
Pointcut = место применения
Spring AOP использует прокси-базированное runtime-вплетение (JDK-прокси или CGLIB), чтобы перехватывать вызовы методов на Spring-бинах и применять advice.
Ключевые моменты:
• Join points это только выполнения методов
• Вызовы через this.foo() обходят advice
• Финальные/приватные методы и классы часто не поддаются советам
Для полной функциональности, такой как перехват полей или конструкторов, используйте AspectJ weaving.
В Spring Boot добавьте spring-boot-starter-aop или включите через @EnableAspectJAutoProxy
.
Результат → более чистый и поддерживаемый код, при этом повторяющиеся задачи остаются консистентными.