2013-02-10 14 views
8

Utworzono niestandardową adnotację @MyAnn. I dodam do niego parametry metody.AspectJ - Uzyskaj wartość opisanego parametru metody

Na przykład: public static call(@MyAnn String name){...}

Korzystanie AspectJ, w jaki sposób można uzyskać dostęp i zaktualizować wartości wszystkich parametrów opatrzone adnotacją?

Znalazłem przykładowy kod pokazujący, jak utworzyć punktory kierowane na niestandardowe adnotacje, here.

Więc na razie stworzyłem aspekt z wycięciem. Ale nie wiem na gorąco, aby uzyskać wartość parametru z komentarzem z MyAnn.

@Aspect 
public class MyAnnAspect { 

    @Around("execution(@my.package.test.MyAnn") // I hope this pointcut will work 
    public void changeParameter(final ProceedingJoinPoint pjp) throws Throwable { 
     // How I can there get parameter value (and chage it)? 
    } 
} 

Odpowiedz

17

Nie sądzę, że praca punktu przekroju, ponieważ nie jest to metoda, która jest odnotowany, przy okazji można zrobić:

MethodSignature ms = (MethodSignature) pjp.getSignature(); 
Method m = ms.getMethod(); 
Annotation[][] pa = m.getParameterAnnotations(); 

Teraz można iteracyjne nad adnotacjami i znaleźć właściwa adnotacja, jeśli istnieje, uzyska wartość parametru, wywołując pjp.getArgs().

+1

Jak uzyskać nazwę pola/pola z getArgs. ? Poda tylko wszystkie wartości. Nie ma związku z adnotacją. –