Статическая оценка точки, когда это сделано
Процесс ткачества Spring AOP выполняется во время выполнения, когда выполняется запрос к этому конкретному методу, затем создается новый прокси-объект, который оборачивает ваш текущий объект, и вызов перехватывается.
Я прав с моим предположением?
Во-вторых, если этот процесс во время выполнения, то что такое статические точки? когда оцениваются эти баллы?
1 ответ
Ваше понимание неверно. Прокси создается только один раз при запуске приложения, а не каждый раз, когда метод вызывается для объекта. (Если у вас нет прокси AOP Scoped Proxy, имеющего область действия прототипа, но этот сценарий маловероятен).
@Aspect
public MyAspect {
@Pointcut("execution(* foo.bar.MyService.foo(..)) and args(x, ..)"
public Object around(ProceedingJoinPoint pop, MyObject x) { ... }
}
Учитывая аспект выше execution(* foo.bar.MyService.foo(..))
является статической частью точки соединения, она может быть сопоставлена независимо от проверки типов. args(x, ..)
однако является динамическим, поскольку его необходимо определить во время выполнения, если значение для x
(первый аргумент в этом случае) имеет тип MyObject
,
Эта часть не может быть определена статически, но только во время фактического вызова. В основном все, что зависит от информации времени выполнения, является динамическим по своей природе.