मैं एक जावा प्रोग्राम लिखने के लिए ऐसी है कि एक MethodA() बुला के बाद, पहले एक विधि methodBeforeA() कहा जाता है नामित कोशिश कर रहा हूँ के बाद एक विधि भागो और फिर MethodA () नामित किया जाता है जिसके बाद नाम दिया जाता है, methodAfterA()। यह जूनिट एनोटेशन का उपयोग करने के समान ही है (@Before, @Test, @After का उपयोग करके), इसलिए मुझे लगता है कि प्रतिबिंब का उपयोग करना संभव होना चाहिए लेकिन मेरे पास बहुत अच्छा सुराग नहीं है।से पहले और जावा में एक कहा जाता विधि
उत्तर
AspectJ आपको विधि प्रविष्टि से पहले और विधि से बाहर निकलने के बाद कटपॉइंट निर्दिष्ट करने की अनुमति देता है।
http://www.eclipse.org/aspectj/doc/released/progguide/starting-aspectj.html
AspectJ में, pointcuts कार्यक्रम के प्रवाह में कुछ में शामिल होने के अंक बाहर लेने। उदाहरण के लिए, pointcut
call(void Point.setX(int))
की पसंद बाहर प्रत्येक बिंदु एक विधि हस्ताक्षर शून्य
Point.setX(int)
है कि के लिए एक कॉल है कि में शामिल होने के - वह यह है किPoint
केvoid setX
एक भीint
पैरामीटर के साथ विधि।
अन्य तरीकों से कॉल डालने के लिए विधि कोड को संशोधित करने की आवश्यकता होगी। जावा प्रतिबिंब आपको बहुत सी चीजें करने देता है, लेकिन यह आपको विधि कोड को गतिशील रूप से संशोधित नहीं करने देता है।
जो जुनीट करता है वह अलग है। यह प्रत्येक विधि @Before
उसकी व्याख्या, @Test
, और @After
की पहचान करता है, तो की तर्ज पर कुछ करता है:
for (Method t : testMethods) {
for (Method b : beforeMethods)
b.invoke();
t.invoke();
for (Method a : afterMethods)
a.invoke();
}
आप निश्चित रूप से कुछ इस तरह कर सकते हैं, सुनिश्चित करें कि आप फोन बनाने के लिए "पहले" और बाद तरीकों "के बाद" हर बार आप प्रश्न में विधि को कॉल करें। लेकिन आप सभी कॉलर्स को ऐसा करने के लिए मजबूर नहीं कर सकते हैं।
- 1. ब्लाकों और कहा जाता विधि से स्वयं
- 2. कौन सी गतिविधि विधि को पहले कहा जाता है?
- 3. जावा में आगे संदर्भ कहा जाता है?
- 4. onResume() पर पहले कहा जाता है AtctivityResult()?
- 5. शुद्ध आभासी विधि कहा जाता है
- 6. awakeFromNib विधि कहा जाता है कई बार
- 7. प्रतिनिधि विधि "clickedButtonAtIndex:" नहीं कहा जाता है
- 8. उपclass विधि क्यों नहीं कहा जाता है?
- 9. लेआउट Subviews विधि कहां कहा जाता है?
- 10. कब डेलोक विधि कहा जाता है?
- 11. onActivityResult() कहा जाता है समय से पहले ही
- 12. JQuery एनीमेशन एनीमेशन से पहले कहा जाता कॉलबैक
- 13. @Transactional विधि किसी अन्य विधि से कहा जाता है एक सौदे
- 14. सी # में बेस कन्स्ट्रक्टर - जिसे पहले कहा जाता है?
- 15. विधि -viewWillLayoutSubviews में कहा जाता बेवजह दो बार
- 16. इकाई में अंतिमकरण विधि कब कहा जाता है?
- 17. स्थानीय चर को जावा में "स्वचालित" क्यों कहा जाता है?
- 18. Httpcontext.Session Application_Start विधि में कहा जाता है Ninject
- 19. कौन सा SendAsync विधि है जब एक HttpClientHandler HttpClient में भेजा जाता है कहा जाता है
- 20. HttpModule Init विधि कई बार कहा जाता है - क्यों?
- 21. एक 'मैनुअल' नकली क्या कहा जाता है?
- 22. इस स्टोरेज विधि को क्या कहा जाता है?
- 23. सी #: क्या होगा अगर एकाधिक धागे से एक स्थिर विधि कहा जाता है?
- 24. onCreateOptionsMenu पर पहले कहा जाता है क्रिएट एंड्रॉइड
- 25. एक जावा विधि _before_ एक और तरीका
- 26. मैं कैसे सुनिश्चित कर सकता हूं कि बच्चे में एक सुपर विधि कहा जाता है?
- 27. TestNG @BeforeMethod विधि को सुपरक्लास में रहने पर नहीं कहा जाता है और एक विशिष्ट समूह चलाया जाता है
- 28. एक घटना हर एक नई पद्धति कहा जाता है
- 29. फिर भी एक और getView कई बार कहा जाता है
- 30. GCDAsynSocketDelegate didReadData विधि नहीं कहा जाता है। GCDAsynSocket
ईमानदार प्रश्न: क्या एस्पेक्टजे सलाह अभी भी निष्पादित करती है जब लक्ष्य विधि को प्रतिबिंब के माध्यम से बुलाया जाता है? –
@AlistairIsrael, http://www.eclipse.org/aspectj/doc/released/faq.php#q:reflectiveCalls हमेशा नहीं सुझाता है। –
सही दिशा में मुझे इंगित करने के लिए धन्यवाद .. इस ब्लॉगपोस्ट में आया और यह वही देता है जो मैं ढूंढ रहा था .. http://www.mkyong.com/spring3/spring-aop-aspectj-annotation-example/ – Vanp