2013-02-10 16 views
8

मैंने कस्टम एनोटेशन @MyAnn बनाया है। और मैं इसके साथ विधि पैरामीटर एनोटेट करेगा।AspectJ - एनोटेटेड विधि पैरामीटर का मूल्य प्राप्त करें

उदाहरण के लिए: public static call(@MyAnn String name){...}

AspectJ का उपयोग करना, मैं कैसे जाएं और एनोटेशन के साथ एनोटेट सभी मापदंडों के मूल्यों को अद्यतन कर सकते हैं?

मुझे कुछ नमूना कोड मिला जो कस्टम एनोटेशन, here को लक्षित पॉइंटकट बनाने के तरीके को दिखाता है।

तो अभी के लिए, मैंने पॉइंटकट के साथ एक पहलू बनाया है। लेकिन मुझे 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)? 
    } 
} 

उत्तर

17

मुझे नहीं लगता कि कि pointcut काम करते हैं, क्योंकि यह विधि है जो टिप्पणी की जाती है नहीं है, जिस तरह से आप कर सकते हैं:

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

अब आप एनोटेशन से अधिक पुनरावृति कर सकते हैं और लगता है उचित एनोटेशन, यदि मौजूद है तो pjp.getArgs() पर कॉल करके पैरामीटर मान प्राप्त करें।

+1

getArgs से फ़ील्ड नाम/फ़ील्ड मान कैसे प्राप्त कर सकते हैं। ? यह केवल सभी मूल्य देगा। एनोटेशन के साथ कोई संबंध नहीं है। –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^