2012-01-11 5 views
2

내가 성공적으로이 코드 @MyAnnotation와 클래스의 정적 초기화를 차단 해요 :AspectJ를 staticinitalization

public aspect SomeAspect { 
    pointcut printClassName() : staticinitialization(@MyAnnotation *); 
    after() : printClassName() { 
     System.out.println(getClass().getName());   
    } 
} 

질문입니다 : 어떻게로드 된 클래스의 이름을받을 수 있나요? 위의 코드는로드 된 클래스의 이름이 아닌 aspect 클래스의 이름입니다.

감사합니다, 테오

+0

참조 [이 답변] (http://stackoverflow.com/questions/7382464/aspectj-syntax-for-after-staticinitialization) - 주석과 미안 더 익숙한 접근 방식이지만, 기본적으로 조인 포인트의 서명 또는 withinTypeName 값이 필요합니다. –

답변

1

당신은 정보의이 유형을 얻기 위해 thisJoinPoint를 사용해야합니다. 이 코드는 트릭을 수행합니다. 솔루션의 시작을위한

after(): printClassName(){ 
     System.out.println(thisJoinPoint.getSignature().getDeclaringTypeName()); 
    } 
관련 문제