Получить дескриптор объекта, перехваченного аннотацией @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
является объектом прокси.