मैं विशिष्ट सेवा घटनाओं के दौरान व्यापक प्रणाली को सूचित करने के लिए अपनी सेवा परत के भीतर स्प्रिंग एप्लिकेशन ईवेंट का उपयोग कर रहा हूं। मेरे पास यह मुद्दा है कि घटनाओं को एक लेनदेन संबंधी संदर्भ में निकाल दिया जाता है (मैं वसंत के @Transactional
एनोटेशन का उपयोग कर रहा हूं)। खतरा यह है कि मैं एक घटना को आग लगाता हूं और फिर लेनदेन प्रतिबद्धता में विफल रहता है (उदाहरण के लिए, हाइबरनेट का उपयोग करते समय हो सकता है)। इस परिदृश्य में, ईवेंट श्रोताओं को कुछ राज्य माना जाएगा जो तब निष्पादित किए जाने के बाद वापस लुढ़काए जाएंगे। यहां का खतरा यह है कि, उदाहरण के लिए, मैंने वेबसाइट पर उपयोगकर्ता के पंजीकरण की पुष्टि करने के लिए एक ईमेल भेजा है, वास्तव में, वास्तव में, उनके उपयोगकर्ता खाते को वास्तव में नहीं बनाया गया था।स्प्रिंग ट्रांजैक्शन एनोटेशन - सफलता पर निष्पादन
क्या कोई तरीका है, एनोटेशन के उपयोग को संरक्षित करना, लेनदेन के बाद किसी घटना को ध्वस्त करने के लिए कहीं ध्वजांकित करना है? जावा स्विंग में जीयूआई प्रोग्रामिंग करते समय यह SwingUtilities.invokeLater(Runnable runnable)
का उपयोग करने के समान कुछ लगता है। मैं कहना चाहता हूं कि वर्तमान लेनदेन सफलतापूर्वक काम करने के बाद कोड के इस बिट को बाद में निष्पादित करें।
कोई विचार?
धन्यवाद,
एंड्रयू
यह सब वसंत में मूल रूप से संभाला अब एनोटेशन के माध्यम से है। https://spring.io/blog/2015/02/11/better-plplication-events-in-spring-framework-4-2https://spring.io/blog/2015/02/11/better देखें -प्पन-इवेंट-इन-स्प्रिंग-फ्रेमवर्क -4-2 विशेष रूप से नए @ ट्रांसेक्शनलएवेंट लिस्टनर एनोटेशन के बारे में अनुभाग। – PaulNUK