आप पहले से ही सफलतापूर्वक spring transaction
कार्यान्वित के रूप में,
Spring
में हम तीन तरीकों से लेन-देन को लागू कर सकते हैं:
- मंच लेनदेन प्रबंधन।
- Declarative लेनदेन प्रबंधन।
- Programmatic लेनदेन प्रबंधन।
आप क्या लागू किया घोषणात्मक लेनदेन प्रबंधन कहा जाता है एक्सएमएल के माध्यम से।
संक्षेप में आपने transaction
के वसंत के AOP सुविधा के कार्यान्वयन को किया।
एक XML आधारित एओपी कॉन्फ़िगरेशन के साथ tx:advice XML
कॉन्फ़िगरेशन को सहक्रियात्मक संयोजन के लिए बनाता है। उदाहरण के लिए, हम विधि विधि का उपयोग स्वचालित रूप से यह पता लगाने के लिए कर सकते हैं कि हम किस प्रकार के लेनदेन को उस विधि पर लागू करना चाहते हैं।
कहो हम सब कि तरीकों जो save
के साथ शुरू और पर लेन-देन को लागू करना चाहते modify
ऐसे savePizza()
, saveColdDrink()
, modifyOrder()
, modifyBill()
के रूप में।
<tx:advice id="txAdvice" >
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED"/>
<tx:method name="modify*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
हमारी सलाह के लिए तैयार है, जैसा कि हम लाइन है कि हम केवल तरीकों जो save
या modify
के साथ शुरू पर लेन-देन चाहते हैं तो ऊपर का उपयोग करके कहा: इन के लिए हम अपने xml फ़ाइल में advice
परिभाषित करने के लिए किया है। अब हम यह कहने जा रहे हैं कि aop-config
के pointcut
तत्व का उपयोग करके कौन से बीन्स को उपर्युक्त सलाह की आवश्यकता है।उदाहरण के लिए मान लें कि हम com.mytransaction.service
पैकेज के अंदर उपलब्ध सभी कक्षाओं में लेनदेन सलाह लागू करना चाहते हैं।
इस के लिए, हम अपने xml फ़ाइल के अंदर निम्न पंक्ति जोड़ने के लिए:
<aop:config>
<aop:pointcut id="allServices"
expression="execution(*com.mytransaction.service.*.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="allServices"/>
</aop:config>
में छोटा है, <tx:advice>
मतलब क्या करना है या हम लागू करना चाहते हैं लेनदेन की जो व्यवहार। <aop-config>
अंदर pointcut
तत्व कहते हैं, जहां हम लेनदेन लागू करना चाहते हैं, कहना <aop:advisor advice-ref="txAdvice" pointcut-ref="allServices"/>
pointcut-रेफरी क्या मतलब है? – luksmir
मैं लेनदेन को बंद करने के लिए कैसे मजबूर करूं –
@Betlista - "tx: method" की आवश्यकता क्या है। पॉइंटकट एक्सप्र के माध्यम से इसे क्यों हासिल नहीं किया जा सकता है? आइए इस उदाहरण में मैं "सेव" और "संशोधित" से शुरू होने वाली सभी विधियों से मेल खाने के लिए पॉइंटकट परिभाषित कर सकता हूं। क्या वह पर्याप्त नहीं होगा? – user001