يتكون تكوين المعاملات في ملفات تكوين الربيع دائمًا من ثلاثة أجزاء ، وهي مصدر بيانات وآلية TransactionManager وآلية الوكيل. بغض النظر عن طريقة التكوين التي تم تكوينها ، يتم تغيير آلية الوكيل بشكل عام.
سيتغير مصدر البيانات و TransactionManager فقط وفقًا لطريقة الوصول إلى البيانات. على سبيل المثال ، عند استخدام Hibernate للوصول إلى البيانات ، يعد DataSource في الواقع SessionFactory ، ويتم تنفيذ TransactionManager باعتباره hibernatetransactionManager.
التفاصيل كما يلي:
وفقًا لآليات الوكيل المختلفة ، يتم تلخيص خمس طرق تكوين معاملات الربيع ، وملفات التكوين هي كما يلي:
الطريقة الأولى: كل فول لديه عامل
<؟ xmlns: context = "http://www.springframework.org/schema/context" http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/spring-ctxt http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.xsd "> bean id =" sessionfactory " name = "configurationClass" value = "org.hibernate.cfg.annotationConfiguration" /> </bean> <!-حدد مدير المعاملات (المعاملة التعريفية)-> <bean id = "TransactionManager"> <property name = "sessionfactory" ref = "sessionfactory" /> name = "sessionfactory" ref = "sessionfactory" /> </bean> <bean id = "userDao"> <!-تكوين مدير المعاملات-> <property name = "TransactionManager" ref = "transactionManager" /> <property name = "target" ref = "userDaOt ar" /> <property name = "properfaces" value = "com.bluesky.spring.dao.generatordao"/> <!-تكوين خصائص المعاملات-> <property name = "TransactionAttributes"> <bors> <props>
الطريقة الثانية: جميع الفاصوليا تشترك في فئة قاعدة الوكيل
<؟ xmlns: context = "http://www.springframework.org/schema/context" http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/spring-ctxt http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.xsd "> bean id =" sessionfactory " name = "configurationClass" value = "org.hibernate.cfg.annotationConfiguration" /> </bean> <!-تعريف مدير المعاملات (المعاملة المعلنة)-> <bean id = "transactionManager"> <property name = "sessionfactory" ref = "sessionfactory" /> < /bean id = مدير المعاملات-> <property name = "TransactionManager" ref = "TransactionManager"/> <!-تكوين خصائص المعاملة-> <property name = "TransactionAttributes"> <props> <props> name = "sessionfactory" ref = "sessionfactory"/> </bean> <bean id = "userDao" parent = "TransactactionBase"> <property name = "target" ref = "userDaotarget"/> </bean> </bans>
الطريقة الثالثة: استخدم اعتراضًا
<؟ xmlns: context = "http://www.springframework.org/schema/context" http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/spring-ctxt http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.xsd "> bean id =" sessionfactory " name = "configurationClass" value = "org.hibernate.cfg.annotationConfiguration" /> </bean> <!-تعريف مدير المعاملات (المعاملة المعلنة)-> <bean id = "transactionManager"> <spertary name = "sessionfactory" ref = "sessionfactory" /> /> /bean id = ref = "TransactionManager"/> <!-تكوين خصائص المعاملة-> <property name = "TransactionAttributes"> <props> <prop key = "*"> propergation_required </prop> </props> </props> </purrentive> </borperation> name = "interceptornames"> <list> <value> TransActionInterceptor </value> </list> </swerperation> </bean> <!-تكوين dao-> <bean id = "userDao"> <property name = "sessionfactory" ref = "sessionfactory"/> </bean> </beans>
الطريقة الرابعة: تم تكوين اعتراضية باستخدام TX Tag
<؟ xmlns: context = "http://www.springframework.org/schema/context" XSI: Schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5 http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aop/spring-aop-2.5.xsd <السياق: التعليق التوضيحي-config /> <context: component-scan base-package = "com.bluesky" /> <bean id = "sessionfactory"> <property name = "configlocation" value = "classpath: hibernate.cfg.xml" /> <property name = "configurationclass" <!-حدد مدير المعاملات (المعاملة المعلنة)-> <bean id = "TransactionManager"> <property name = "sessionfactory" ref = "sessionfactory" /> < /bean> <tx: explive id = "txadvice" anctaction-manager = "TransactactionManager "> <tx: entributes> </tx: expluct> <aop: config> <aop: pointcut id = "interceptorpointcuts" expression = "execution (*com.bluesky.spring.dao.*.*.
الطريقة الخامسة: التعليق التوضيحي الكامل
<؟ xmlns: context = "http://www.springframework.org/schema/context" XSI: Schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5 http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aop/spring-aop-2.5.xsd <السياق: التعليق التوضيحي-config /> <السياق: مكون مسكك الأساس = "com.bluesky" /> <tx: المعاملة المعاملة التي تعتمد على التعليقات التوضيحية = "TransactionManager" /> <bean id = "sessionfactory"> <property name = "configlocation" value = "classpath.cfg.cfg.xml" / value = "org.hibernate.cfg.annotationConfiguration"/> </bean> <!-حدد مدير المعاملات (المعاملة التصريحية)-> <bean id = "TransactionManager"> <property name = "sessionfactory" ref = "sessionfactory"/> </
في هذا الوقت ، تحتاج إلى إضافة شرح توضيحي transactional إلى DAO ، على النحو التالي:
حزمة com.mktao.spring.dao ؛ استيراد java.util.list ؛ استيراد org.hibernate.SessionFactory ؛ استيراد org.springframework.beans.factory.annotation.autowired ؛ استيراد org.springframework.orm.hibernate3.support.hibernatedaosupport ؛ استيراد org.springframework.stereotype.component ؛ استيراد com.bluesky.spring.domain.user ؛ @concletactional@component ("userDao") فئة عامة userDaoImpl يمتد hibernatedaoSupport تنفذ userDao {public list <serve> listUsers () {return this.getSession (). createquery ("من المستخدم"). } ...}ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.