मेरे पास कुछ विरासत कोड है जो अब मैं वसंत के तहत पुनः उपयोग करने की कोशिश कर रहा हूं। यह कोड अन्य कोड में गहराई से घिरा हुआ है, इसलिए यह फिर से डिजाइन करने के लिए व्यावहारिक नहीं है और कई परिस्थितियों में बुलाया जाता है, जिनमें से कुछ वसंत के माध्यम से होते हैं। यदि मैं शुरू कर चुका हूं तो वसंत लेनदेन का उपयोग करना मैं क्या करना चाहता हूं; अन्यथा, मौजूदा (विरासत) डीबी कनेक्शन तंत्र का उपयोग करना जारी रखें। हमारा पहला विचार हमारी विरासत कक्षा को एक बीन बनाना था और एक इंजेक्शन TransactionPlatformManager
का उपयोग करना था, लेकिन ऐसा लगता है कि हमारी स्थिति के लिए कोई तरीका जर्मनी नहीं है। कुछ शोध से पता चला है कि वसंत में TransactionSynchronizationManager
नामक एक वर्ग है जिसमें एक स्थिर विधि isActualTransactionActive()
है। मेरे परीक्षण इंगित करता है इस विधि का पता लगाने अगर एक स्प्रिंग लेन-देन सक्रिय है की एक विश्वसनीय तरीका है:क्या लेनदेन सिंक्रनाइज़ेशनमैनेजर.इसएक्टुअल ट्रांज़ेक्शनएक्टिव() का उपयोग करने से स्प्रिंग डीबी लेनदेन सक्रिय है या नहीं, इसका पता लगाने का कोई बेहतर तरीका है?
- जब
@Transactional
एनोटेशन के बिना स्प्रिंग सेवा के माध्यम से कहा जाता है, यह रिटर्न झूठी - जब
@Transactional
साथ स्प्रिंग सेवा के माध्यम से कहा जाता है, यह रिटर्न सच - मेरी विरासत विधि में मौजूदा तरीका कहा जाता है, यह रिटर्न झूठी
मेरा प्रश्न: वहाँ का पता लगाने अगर एक सौदे सक्रिय है की एक बेहतर तरीका है?
धन्यवाद! यह बिल्कुल सही है. – fool4jesus