得到@Around注释拦截的对象的句柄

时间:2014-04-07 21:19:40

标签: java aspectj spring-aop

类标题的对象的getDescription方法被一个方面拦截。如何访问对象本身的实例。

@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 个答案:

答案 0 :(得分:1)

根据您想要的对象使用ProceedingJoinPoint#getTarget()ProceedingJoinPoint#getThis()

getTarget()

  

返回目标对象。这将永远是同一个对象   与目标切入点指示符匹配。除非你具体   需要这种反射访问,你应该使用目标切入点   指示器获取此对象以获得更好的静态类型和   性能

getThis()

  

返回当前正在执行的对象。这将永远是相同的   对象与此切入点指示符匹配。除非你   特别需要这种反射访问,你应该使用这个   切入点指示器获取此对象以获得更好的静态类型和   性能

基本上,this是在(代理)上调用方法的对象,而target是代理对象。