2010-06-23 9 views
7

के लिए कॉन्फ़िगरेशन विकल्प क्या वसंत में @ ट्रांसेक्शन एनोटेशन के लिए कोई कॉन्फ़िगरेशन आधारित विकल्प है?वसंत @ ट्रांसेक्शन

मैं अपने जावा कक्षाओं को यथासंभव वसंत से मुक्त रखना चाहता हूं, यानी किसी भी रूपरेखा से जितना संभव हो सके decoupled।

उत्तर

8

हां, aop:config और tx:advice का उपयोग कर। उदाहरण के लिए:

<aop:config> 
    <aop:pointcut id="serviceMethods" 
     expression="execution(* com.package.service..*.*(..))" /> 

    <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethods" /> 
</aop:config> 

<tx:advice id="txAdvice" transaction-manager="transactionManager"> 
    <tx:attributes> 
     <tx:method name="*" propagation="REQUIRED" /> 
    </tx:attributes> 
</tx:advice> 
+1

युप, आप यहां विभिन्न संभावनाएं देख सकते हैं: http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/transaction.html#transaction-declarative –

3

एक एनोटेशन एक लेनदेन में विधि को निष्पादित करने के लिए सबसे अच्छा विकल्प है। यह स्प्रिंग और ईजेबी दोनों के लिए अनुशंसित है 3.

एक्सएमएल दृष्टिकोण को और अधिक विन्यास की आवश्यकता है, रिफैक्टर अनुकूल नहीं है और यदि आपको एक लेनदेन में कोई निश्चित विधि निष्पादित की जाएगी या नहीं, तो आपको कॉन्फ़िगरेशन में देखना होगा।

चूंकि एनोटेशन आधारित लेनदेन समर्थन अधिकांश डेवलपर्स द्वारा पसंदीदा विकल्प है और आप स्प्रिंग के @Transactional एनोटेशन का उपयोग करना पसंद नहीं करते हैं, तो मैं आपको एक कस्टम एनोटेशन का उपयोग करने की सलाह दूंगा।

तो फिर तुम दो विकल्प हैं:

  • अपने कस्टम एनोटेशन वसंत के @Transactional बढ़ाने और अपने स्प्रिंग विन्यास में <tx:annotation-driven /> तत्व का उपयोग करते हैं। यह आसान है और स्प्रिंग निर्भरता को हटाने के लिए केवल एक एनोटेशन को अद्यतन करने की आवश्यकता है।
  • एक इंटरसेप्टर बनाएं जो एनोटेटेड विधि से पहले और बाद में तर्क निष्पादित करता है। स्प्रिंग के साथ कंटेनर के रूप में, आपको अपने पसंदीदा PlatformTransactionManager कार्यान्वयन की सलाह देने से पहले और बाद में इंटरसेप्टर से लेनदेन हैंडलिंग का प्रतिनिधि होना चाहिए।

मैंने लिखा है कि आप एक इंटरसेप्टर कैसे बना सकते हैं जो एनोटेशन here के साथ चिह्नित विधि से पहले और बाद में तर्क जोड़ता है। और यह दिखाया कि प्लेटफॉर्म ट्रान्सएक्शन मैनेजर here पर आपको किन विधियों का उपयोग करना चाहिए।

मुझे आशा है कि इससे मदद मिलती है!