2013-02-10 25 views
8

al. Özel ek açıklama @MyAnn oluşturdum. Ve bununla birlikte yöntem parametrelerini ekleyeceğim. ÖrneğinAspectJ - Açıklamalı yöntem parametresi değerini

: public static call(@MyAnn String name){...}

AspectJ kullanarak, nasıl erişebilir ve ek açıklamasıyla açıklamalı tüm parametrelerin değerleri güncelleyebilirsiniz?

Özel ek açıklamaları, here hedefleme nasıl oluşturulur gösteren bazı örnek kod bulundu.

Şimdilik, bir nokta ile bir nokta yarattım. Ama MyAnn ile açıklamalı parametrenin değerini almak için sıcak bilmiyorum. o açıklamalı edilir bir yöntem değildir, çünkü

@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)? 
    } 
} 

cevap

17

Ben, o pointcut çalışmalarını sanmıyorum, bu arada yapabileceğiniz:

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

Şimdi ek açıklamalar sürekli tekrarlanması ve bulabilirsiniz Varsa uygun açıklama, pjp.getArgs() numaralı telefonu arayarak parametre değerini alır.

+1

Alan adı/alan değerini getArgs'den nasıl edinebilirsiniz. ? Sadece tüm değerleri verecektir. Ek açıklama ile ilişkisi yoktur. –

İlgili konular