2012-10-13 13 views
6

मैं हाइबरनेट के कामकाजी ज्ञान के साथ वसंत में नया हूं। मेरा काम वसंत घोषणात्मक दृष्टिकोण का उपयोग कर लेनदेन को लागू करना था। और Google की मदद से सफलतापूर्वक मैंने Google की मदद से किया। लेकिन अनुप्रयोग-context.xml में उपयोग की जाने वाली शर्तों के बारे में स्पष्ट रूप से समझने में सक्षम नहीं है।वसंत टीएक्स के बीच अंतर: सलाह और वसंत एओपी पॉइंटकट

1.

<tx-advice> 

</tx-advice> 
  1. <aop-config> 
        // here is point cut were declared 
    </aop-config> 
    

किसी ने मुझसे ऊपर बिंदु के बारे में व्याख्या कर सकते हैं, इस बीच मैं भी गूगल से यह समझने की कोशिश कर रहा हूँ।

उत्तर

23

आप पहले से ही सफलतापूर्वक spring transaction कार्यान्वित के रूप में,

Spring में हम तीन तरीकों से लेन-देन को लागू कर सकते हैं:

  1. मंच लेनदेन प्रबंधन।
  2. Declarative लेनदेन प्रबंधन।
  3. 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"/>

+0

pointcut-रेफरी क्या मतलब है? – luksmir

+0

मैं लेनदेन को बंद करने के लिए कैसे मजबूर करूं –

+1

@Betlista - "tx: method" की आवश्यकता क्या है। पॉइंटकट एक्सप्र के माध्यम से इसे क्यों हासिल नहीं किया जा सकता है? आइए इस उदाहरण में मैं "सेव" और "संशोधित" से शुरू होने वाली सभी विधियों से मेल खाने के लिए पॉइंटकट परिभाषित कर सकता हूं। क्या वह पर्याप्त नहीं होगा? – user001

2

<tx:advice> टैग Transaction Management कॉन्फ़िगरेशन के लिए विशिष्ट है जबकि <aop:config> टैग सामान्य रूप से Aspect-Oriented Programming करने के लिए उपयोग किया जा सकता है।

AOP लेनदेन की तुलना में कई और चीजों के लिए उपयोग किया जा सकता है, उदाहरण के लिए लॉगिंग या एक्सेस नियंत्रण। इसके अलावा, लेनदेन प्रबंधन को एओपी का उपयोग करके लागू नहीं किया जाना चाहिए, यह आमतौर पर वसंत में किया जाता है (लेकिन वसंत भी Programmatic Transaction Management का समर्थन करता है)।

संबंधित मुद्दे