بيئة البناء الأساسية المعتمدة: SpringMVC و MyBatis و MySQL و Tomcat Spring معاملات الربيع تحطم عيوب إدارة المعاملات العالمية التقليدية وإدارة المعاملات المحلية ، بحيث يمكن استخدام نموذج موحد لإدارة المعاملات في أي بيئة ، ويمكنك كتابة رمز مرة واحدة ثم تهيئة سياسات إدارة المعاملات المختلفة في بيئات مختلفة. يستخدم springmvc و mybatis ، يتم تصنيفه بشكل موحد لإعلان الخدمة ووحدة التحكم
نظرًا لأن ترتيب تحميل ملفات التكوين في الخادم هو web.xml --- الجذر context.xml (ملف تكوين الربيع) --- Servlet-context.xml (ملف التكوين من springmvc .xml تكوين في الملف ، سيتم مسح وحدة التحكم أولاً ، ولكن في هذا الوقت ، لم يتم تعزيز الخدمة بعد المعاملة. السعة) ، لذلك يجب أن نكون على السياق الجذر
<!-يتم مسح المكون تلقائيًا ، ويتم إزالة وحدة التحكم أدناه. -> <سياق: مكون المسح الضوئي = "com.sence"> <السياق: استبعاد الترشيح = "التعليقات التوضيحية" = "org.springframework.sterotype.contr Oller" />. > <! -> <السياق: مكون المسح الضوئي-package = "com.sence"> <السياق: استبعاد الترشيح = "التعليق التوضيحي" = "org.springframework.sterotype.contr oller" /> < /context: component-scan "وحدة التحكم في المسح الضوئي في خدمة الخدمة
<!-مسح جميع وحدة التحكم ولكن لا تقم بمسح الخدمة-> <السياق: مكون المسح الضوئي backage = "com.sence" .controller " /> <السياق: استبعاد النوع المجاني =" ENCENTION "expression =" org.springframework.steeotype.service " /> < /سياق: مكون ---! Component-Scan Base-package = "com.sence"> <context: include-filter type = "enrotation" = "org.springframework.stereotype.contro ller" /> <context: type-filter type = "annotation." = "org.springframework.sterotype.service" /> < /سياق: مكون المستحيل>يمكن تكوين ما يلي لإدارة البيان ، والتكوين هو كما يلي:
<!-مدير المعاملات ، استخدم DataSourCeTransActionager-> <bean id = "txmanager"> <property name = "dataSource" ref = "datasource" /> </bean> <!-Sprin. config> <aop: pointcut id = "fooservicemethods" exposition = "execution (*com.sence.*.*. = "fooservicemethods"/> </aop: config> <tx: exply id = "txAdvice" transaction-manager = "txmanager"> <tx: entributes> <method nam e = /> <tx: method name = "love*" read-only = "true"/> <tx: method name = "*" rollback-for = "customexception"/> </tx: attributes> </tx: exp > <!-مدير المعاملات ، استخدم datasourCeTransActionager-> <bean id = "txmanager"> <property name = "datasource" ref = "datasource"/> </> bean> <! config> <aop: pointcut id = "fooservicemethods" expression = "execution (*com.sence.*.*.*. "/> </aop: config> <tx: excder id =" txAdvice "Techetaction-manager =" txmanager "> <tx: attr ibutes> <tx: method name =" find*"read-only =" true "/ > <tx: method name = "load*" read-only = "true"/> <tx: method name = "*" Rollback-for = "Customexception"/> </sx: attributes> </sx: expray>في هذه المرحلة ، تم الانتهاء من التكوين الخاص بي ، ولكن بعد الاختبار ، عندما ذهبت إلى جدول قاعدة بيانات MySQL على دفعات ، كان أحد الكائنات خاطئة ، ولم تعود شؤون Customexception. ، الخطوات هي كما يلي: 1. ابحث عن ما إذا كان إعلان المعاملات من نوعه خاطئ ، إذا كانت نقطة الدخول خاطئة