2011-10-19 20 views
19

मैं एक पॉइंटकट परिभाषित करने की कोशिश कर रहा हूं, जो @CatchThis के साथ एनोटेटेड हर विधि को पकड़ लेगा। यह मेरी खुद की टिप्पणी है।वसंत एओपी - एनोटेशन के साथ प्रत्येक विधि के लिए पॉइंटकट

इसके अलावा, मैं विधि के पहले तर्क तक पहुंच प्राप्त करना चाहता हूं, जो Long प्रकार का होगा। अन्य तर्क भी हो सकते हैं, लेकिन मुझे उनकी परवाह नहीं है।


संपादित

यह वही है मैं अभी है। मुझे नहीं पता कि @CatchThis के साथ एनोटेटेड विधि के पहले पैरामीटर को कैसे पास किया जाए।

@Aspect 
public class MyAspect { 
    @Pointcut(value = "execution(public * *(..))") 
    public void anyPublicMethod() { 
    } 

    @Around("anyPublicMethod() && @annotation(catchThis)") 
    public Object logAction(ProceedingJoinPoint pjp, CatchThis catchThis) throws Throwable { 
     return pjp.proceed(); 
    } 
} 
+0

स्प्रिंग एनोटेशन ढांचे का उपयोग कर के बारे में क्या? –

+0

मैंने अपनी पोस्ट अपडेट की है। – emesx

उत्तर

22

कुछ इस तरह करना चाहिए:

@Aspect 
public class MyAspect{ 

    @Pointcut(value="execution(public * *(..))") 
    public void anyPublicMethod() { 
    } 

    @Around("anyPublicMethod() && @annotation(catchThis) && args(.., Long ,..)") 
    public Object logAction(
     ProceedingJoinPoint pjp, CatchThis catchThis, Long long) 
     throws Throwable { 

     return pjp.proceed(); 
    } 
} 
+0

मैंने अपनी पोस्ट अपडेट की है। क्या आप अपने स्निपेट के साथ ऐसा ही कर सकते हैं? मैं बहुत आभारी रहूंगा। – emesx

+0

@elmes OK, अद्यतन –

+0

धन्यवाद। क्या यह संभव है, उन विधियों को पकड़ने के लिए जिनके पास एक लंबा तर्क है जो आवश्यक रूप से पहला तर्क नहीं है - यह पहला, दूसरा .. या आखिरी हो सकता है? – emesx

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

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