2010-02-15 10 views
18

मुझे स्प्रिंग (संस्करण 2.5.6) में पॉइंटकट परिभाषा के साथ समस्या हो रही है। मैं किसी दिए गए विधि को छोड़कर, किसी विधि को सभी विधि कॉल को अवरुद्ध करने का प्रयास कर रहा हूं (नीचे दिए गए उदाहरण में कुछ विधि)।एंड्रॉइड के लिए स्प्रिंग एओपी पॉइंटकट सिंटैक्स, या नहीं और

<aop:config> 
    <aop:advisor 
     pointcut="execution(* x.y.z.ClassName.*(..)) AND NOT 
        execution(* x.y.x.ClassName.someMethod(..))" 
    /> 
</aop:config> 

हालांकि, इंटरसेप्टर रूप में अच्छी तरह someMethod शुरू होता है।

<aop:config> 
    <aop:advisor 
     pointcut="execution(* x.y.z.ClassName.(* AND NOT someMethod)(..)))" 
    /> 
</aop:config> 

लेकिन इस संकलन नहीं करता है के रूप में यह मान्य सिंटैक्स (मैं एक BeanCreationException मिल) नहीं है:

तब मैं इस कोशिश की।

क्या कोई भी कोई सुझाव दे सकता है? इस स्तर पर देर

pointcut="execution(* x.y.z.ClassName.*(..)) 
      && !execution(* x.y.x.ClassName.someMethod(..))" 
+0

क्या आपने इसके बजाय @AspectJ शैली के साथ पहलू तर्क लिखने पर विचार किया है? जावा के साथ पहलू तर्क लिखना बहुत आसान और अधिक शक्तिशाली है। विशेष रूप से यदि आप एजेडीटी प्लगइन के साथ ग्रहण का उपयोग कर रहे हैं। – Espen

उत्तर

18

मैं अपने शायद एक सा पता है, लेकिन एक ही समस्या आ गई ive और मैं इसलिए इसकी &amp;&amp; ! एम्परसेंड वर्ण से बचने के बजाय 'से इसका समाधान नहीं:

4

यह काम करना चाहिए (spring AOP reference) और नहीं 'या' & &! '। मैं xml फ़ाइल

<aop:config> 
    <aop:pointcut id="blah" expression="execution(* com.disney.goofy..*.*(..)) &amp;&amp; [email protected](com.disney.goofy.NonDisneyCharacter)"/> 
    <aop:advisor advice-ref="transAdvice" pointcut-ref="blah"/> 
</aop:config> 

में यह कर रहा हूँ यह सभी तरीकों com.disney.goofy में मार डाला और कहा कि NonDisneyCharacter

+2

यह काम नहीं करता मैं डर रहा हूँ।ध्यान दें कि वसंत संदर्भ कहता है &&> और और! > एक्सएमएल फाइलों में नहीं। वैसे भी टिप के लिए धन्यवाद :) – Odinodin

1

मैं भी वसंत 2.5 उपयोग कर रहा हूँ के साथ एनोटेट नहीं कर रहे हैं करने के लिए सलाह लागू होता है। 6 और या के साथ काम करने में कोई समस्या नहीं थी, लेकिन और काम कर रहा था। यह पता चला है कि या (लोअरकेस में) काम करता है, इसलिए उस कोड में स्पष्ट रूप से एक बग है।

ऐसा नहीं है कि उचित AspectJ वाक्य रचना & &, है दिलचस्प है ||, और !, लेकिन एक्सएमएल में काम करने के लिए वसंत द्वारा और/या/वाक्यविन्यास जोड़ा गया था। मैनुअल से:

जब pointcut संयोजन उप भाव, '& &' एक XML दस्तावेज़ के भीतर अजीब है, और इसलिए कीवर्ड 'और', 'या' और 'नहीं' हो इस्तेमाल किया जा सकता '& &', '||' के स्थान पर तथा '!' क्रमशः ।

मुझे लगता है कि होता है कि जब से & & केवल एक ही है कि है वास्तव में एक्सएमएल में अजीब है (डालने के बारे में मुश्किल बात नहीं है |! या एक्सएमएल में) तो और केवल एक ही था कि है ठीक से परीक्षण किया गया

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