2014-04-07 4 views
0

클래스의 Object의 getDescription 메소드가 aspect에 의해 가로 채졌다. 객체 자체의 인스턴스에 액세스하려면 어떻게해야합니까?@Around annotation에 의해 인터셉트 된 객체의 핸들을 얻는다.

@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()

대상 오브젝트를 돌려줍니다. 이것은 항상 과 대상이 같은 대상 지정자 지정자가 일치합니다. 구체적으로 에이 반사 액세스가 필요하지 않은 경우 대상 고정 점 지정 지정자를 사용하여이 개체에서 더 나은 정적 입력과 성능을 얻어야합니다.

getThis()

는 현재 실행중인 오브젝트를 돌려줍니다. 이것은 항상이 pointcut 지정자와 일치하는 것과 동일한 개체가 될 것입니다. 에이 반사 액세스가 특별히 필요한 경우가 아니면이 포인트 컷 부호를 사용하여 더 나은 정적 입력과 성능을 얻으십시오.

기본적 this는, 상기 방법은 (프록시)에 호출되고 target는 프록시 목적되었다는 것을 목적으로한다.

+0

둘의 차이점은 무엇입니까? – riship89

+0

@ riship89 javadoc (및 따옴표) 및 [이 이전 질문] (http://stackoverflow.com/questions/22848738/can-somebody-explain-this-target-pointcut-designators/22849166#22849166)을 참조하십시오. –

관련 문제