Вопрос проверяет понимание терминологии AOP и умение объяснить, как именно аспекты применяются к коду.
Join point — это конкретная точка выполнения программы, например вызов метода.
Pointcut — это выражение, которое выбирает набор join point’ов.
Join point отвечает на вопрос «где мы сейчас», а pointcut — «какие точки нас интересуют».
Они используются вместе для применения аспектов.
Это базовые понятия AOP.
Join point — это конкретный момент выполнения программы, к которому может быть применён аспект.
В Spring AOP join point — это вызов метода.
Pointcut — это выражение, которое описывает, какие join point’ы должны быть перехвачены.
@Aspect
class LoggingAspect {
@Before("execution(* com.example.service.*.*(..))")
public void log(JoinPoint jp) {
// логика аспекта
}
}
Здесь:
join point — конкретный вызов метода
pointcut — выражение execution(...)
join point — факт выполнения
pointcut — правило отбора
Pointcut может соответствовать:
одному join point’у
нескольким
ни одному
Join point и pointcut — фундаментальные понятия AOP. Они позволяют точно и декларативно описывать, где и как должен применяться аспект.