Spring AOP — зачем нужно аспектное программирование
Spring AOP — зачем нужно аспектное программирование
Кратко (слайд):
AOP (Aspect Oriented Programming) — подход, позволяющий отделить сквозную функциональность (логирование, безопасность, транзакции и др.) от основной логики приложения.
В Spring реализуется через аспекты (@Aspect), которые перехватывают выполнение методов.
Пример: вместо того, чтобы вставлять System.out.println() во все методы, можно создать один аспект логирования, который автоматически выполнится до и после каждого вызова метода сервиса.
Подробно:
Когда приложение растет, в нем появляется множество повторяющихся действий:
логирование начала и конца метода,
проверка прав доступа,
открытие/закрытие транзакций,
измерение времени выполнения,
аудит и безопасность.
Если писать это вручную в каждом классе, код становится громоздким и плохо читаемым.
Например:
public void saveUser(User user) {
System.out.println("Start saveUser");
repository.save(user);
System.out.println("End saveUser");
}
Через неделю в проекте будет сотни таких повторов.
AOP решает это, позволяя описать эти действия один раз в отдельном классе и подключить их к нужным методам автоматически.
