java - Spring beans life cycle dependency on transaction manager -


स्प्रिंग बीन को शुरु करते समय मुझे निम्नलिखित लेनदेन त्रुटि के साथ समस्या है:

  javax.preistence लेन-देन अपेक्षित अपवाद: कोई लेन-देन प्रगति पर है  

मेरी बीन इस तरह से दिखती है:

  & lt; bean id = "initBean" class = "com.global.InitBean "Init-method =" execute "& gt;  

और मैं निम्नलिखित लेनदेन प्रबंधक का उपयोग करता हूं:

  & lt; tx: एनोटेशन-चालित लेनदेन-प्रबंधक = "chainedTransactionManager" & gt;  

मेरी निष्पादित विधि इस तरह से दिखाई देती है:

  @ ट्रांसिजनल सार्वजनिक अमान्य निष्पादन () {doSomeThing ...}  
< पी> मुझे लगता है कि समस्या तब होती है जब स्प्रिंग शुरू करने सेम initBean लेनदेन प्रबंधक तैयार नहीं है। chainedTransactionManager

  & lt; बीन आईडी = "initBean" class = "com.global.InitBean" इनट पर  डिपाइन-ऑन  का उपयोग करने की कोशिश की -method = "execute" निर्भर-पर = "chainedTransactionManager" & gt;  

लेकिन फिर भी यही परिणाम क्या एक और तरीका है कि कैसे निष्पादन विधि को कॉल करें जब लेनदेन प्रबंधक तैयार हो?

init- विधि घोषणा से initBean बीन परिभाषा, क्योंकि स्प्रिंग ट्रांसेक्शनल तरीके को लागू करने के लिए प्रॉक्सी का उपयोग करती है, और आपके सेम के लिए ट्रांसेक्शनल प्रॉक्सी अभी शुरू नहीं की गई है जब बीन को पहली बार आरंभ किया जा रहा है।

यदि निष्पादित करें विधि को आपके बीन की init-method के रूप में रहने की आवश्यकता है, तो आप अपनी विधि में TransactionTemplate का उपयोग करने का प्रयास कर सकते हैं।


Comments