Получить дескриптор объекта, перехваченного аннотацией @Around

Метод getDescription Объекта класса Title был перехвачен аспектом. Как мне получить доступ к экземпляру самого объекта.

@Around("execution(String com.*.*.*.Title.getDescription(..))")
public String getInternationalizedTitleDescription(ProceedingJoinPoint joinPoint) throws Throwable {
    if (something){
        return joinPoint.proceed(); 
    } else {
        //here I need access to instance to Title
        //Title t = joinPoint.getObject();
        //return SomeOtherObject.getTitleData(t);
    }
}

1 ответ

Решение

Использование ProceedingJoinPoint#getTarget() или же ProceedingJoinPoint#getThis() в зависимости от того, какой объект вы хотите.

getTarget()

Возвращает целевой объект. Это всегда будет тот же объект, который соответствует целевому указателю pointcut. Если вам не нужен этот рефлексивный доступ, вы должны использовать целевой указатель точки, чтобы получить этот объект для лучшей статической типизации и производительности.

getThis()

Возвращает текущий исполняемый объект. Это всегда будет тот же объект, который соответствует обозначению this pointcut. Если вам не нужен этот отражательный доступ, вам следует использовать указатель pointcut, чтобы получить этот объект для лучшей статической типизации и производительности.

В принципе, this является объектом, на котором был вызван метод (прокси) и target является объектом прокси.

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