Статическая оценка точки, когда это сделано

Процесс ткачества 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,

Эта часть не может быть определена статически, но только во время фактического вызова. В основном все, что зависит от информации времени выполнения, является динамическим по своей природе.

Другие вопросы по тегам