1. استخدم التعليقات التوضيحية:
في ملف Configuration File ApplicationContext.xml ، أضف مسح التعليقات التوضيحية. يقوم عنصر التكوين بتكوين المسح الضوئي للحزم المحددة لتنفيذ حقن التبعية.
<؟ Xmlns: XSI = "http://www.w3.org/2001/xmlschema-instance" Xmlns: aop = "http://www.springframework.org/schema/aop" http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3 http://www.springframework.org/schema/Util base-package = "com.test" /> // حيث يتم مسح < /beans>
2. التعليقات الشائعة:
@controller@service@autowired@requestmapping@requestparam@modelAttribute@cachable@cacheflush@resource@postconstruct@prepestroy@repository@component (غير موصى به)@scop
3. شروط الربيع الشائعة الاستخدام:
Controller (لطبقة العرض)
بعد استخدام التعليق التوضيحي Controller لتحديد معامل المستخدم ، فهذا يعني أن معامل المستخدم يجب تسليمه إلى حاوية الربيع للإدارة. سيكون هناك إجراء يسمى "عامل المستخدم" في حاوية الربيع. تم أخذ هذا الاسم بناءً على اسم فئة المستخدم. ملاحظة: إذا لم يحدد Controller قيمته 【Controller】 ، فإن اسم الفاصوليا الافتراضي هو صغير في الحرف الأول من اسم الفصل. إذا قمت بتحديد القيمة 【Controller (value = "useraction")】 أو 【Controller ("Useraction")】 ، ثم استخدم القيمة كاسم للفول.
يستخدم UserAction هنا أيضًا التعليق التوضيحي SSCOPE. SSCOPE ("النموذج الأولي") يعني أن نطاق الإجراء يتم الإعلان عنه كنموذج أولي. يمكنك استخدام Scope = "النموذج الأولي" للحاوية للتأكد من أن كل طلب لديه إجراء منفصل للتعامل معه ، وتجنب مشكلات سلامة مؤشرات الترابط في الدعامات. الربيع النطاق الافتراضي هو وضع Singleton (Scope = "Singleton") ، والذي سيقوم فقط بإنشاء كائن عمل. كل وصول هو نفس كائن الإجراء. البيانات ليست آمنة. يتطلب Struts2 أن كل وصول يتوافق مع إجراء مختلف. يمكن أن يضمن Scope = "النموذج الأولي" إنشاء كائن عمل عند وجود طلب.
controller
scope ("النموذج الأولي") يمتد معامل مستخدم الفئة العامة BaseAction <Seter> {}@ الخدمة (المستخدمة في طبقة منطق الأعمال)
لاحظ أنه يتم استخدام شرح Service ضمن فئة التنفيذ لواجهة الخدمة ، وليس في الواجهة.
هذا يعكس انعكاس التحكم في الربيع بشكل جيد للغاية. نحن لا نسمح للكائن بتسوية الكائن نفسه والاعتماد بنشاط على الكائن ، ولكن بدلاً من ذلك نستخدم حاوية لإنشاء الكائن ، الذي تتم إدارته بواسطة IOC. مثال:
عندما يريد Action استخدام UsperServiceImpl ، لا يتعين عليك إنشاء مثيل من مستخدمي UsperServiceImpl بنشاط. تم إنشاء مثيل userviceiMpl إلى الربيع. يمنح Spring مثيل AssorerviceImpl الذي تم إنشاؤه إلى الإجراء ، ويمكنك استخدامه مباشرة بعد الحصول على الإجراء. يمكن استخدام الإجراء فورًا بعد إنشاء مثيل UserviceServiceImpl بنشاط ، ولكنه ينتظر بشكل سلبي لإنشاء Spring لإنشاء مثيل UsperServiceImpl قبل حقنه في العمل. هذا يدل على أن "التحكم" في الإجراء على فئة "UserviceRviceImpl" قد تم "عكس". اتضح أن المبادرة في يدي. لا بد لي من استخدام مثيل فئة "userviceRviceImpl". يمكنني أخذ المبادرة لاستخدامها على الفور. لكن الآن لا يمكنني أخذ المبادرة إلى مثيلات جديدة من مثيل فئة "UserviceRviceImpl". تم أخذ قوة مثيل فئة "userviceRviceImpl" الجديد بحلول الربيع. يمكن فقط لـ Spring أن تكون مثيلًا جديدًا لمثيل "UserviceRviceImpl" ، ويمكن أن ينتظر العمل فقط لإنشاء فئة "مستخدمين" بعد مثيل فئة RVICEIMPL "، يرجى" الربيع "يعطيه مثيل" تم إنشاؤه "لفئة" UsperServiceImpl "حتى يتمكن من استخدام" الاستخدام ". UserviceImpl ، لذلك ينشئ تبعية على userviceimpl.
service ("uservervice") فئة عامة orseverserviceImpl تنفذ المستخدمين {}@ مستودع (لإدارة البيانات)
يستخدم المؤلف الأداة لإنشاء نموذج بيانات طبقة الكيان و Mapper في الاتجاه المعاكس ، لذلك لا يتم استخدام هذا التعليق التوضيحي ، ولكن هذا ببساطة يضخ حبة في حاوية الزنبرك.
repository (value = "userDao") فئة عامة userDaoImpl تمتد على أساسها <Sether> {}4. شائعات springmvc المستخدمة:
@autowired (حقن حسب النوع)
توضيح متغيرات أعضاء الفئة والأساليب والمبنات لإكمال أعمال التجميع التلقائية. ببساطة ، هو استدعاء الفول وإخبار الربيع بأنه موجود ويتم إدارته في الحاوية.
البحث AUTOWIRED من مقالة الربيع عبر الإنترنت وفقًا لنوع الفول. يجب أن يكون نوع التسجيل فريدًا ، وإلا سيتم الإبلاغ عن استثناء.
عندما يعمل التعليق التوضيحي Autowired على نوع الخريطة ، إذا كان مفتاح الخريطة هو نوع السلسلة ، فسيضيف Spring جميع الأنواع في الحاوية إلى النوع المقابل لقيمة الخريطة ، واستخدم معرف الفول أو اسمه كمفتاح الخريطة.
Autowired وظيفة أخرى هي أنه إذا تم شرحها على نوع BeanFactory ، ونوع ApplicationContext ، ونوع ResourceLoader ، ونوع ApplicationEventPublisher ، ونوع الرسائل ، فسوف يقوم Spring تلقائيًا بحقن مثيلات التنفيذ هذه دون عمليات إضافية.
Autowired
خاص تقارير الخدمات الخاصة ؛
Resource (حقن بالاسم)
على غرار AUTOWIRED ، يبحث @Resource افتراضيًا وفقًا لاسم الفول. إذا لم يتم العثور عليها ، فسيبحث حسب النوع.
Resource
مصدر بيانات البيانات الخاص ؛ // حقن الفول المسمى "DataSource"
Resource (name = "datasource")
Resource (type = datasource.class)
السؤال الممتد: ما هو التجميع حسب النوع وما هو التجميع بالاسم؟
من النوع يعني أنه عندما يكون هناك حبة ذات نفس النوع مثل السمة المحددة في حاوية الربيع ، سيتم تجميع السمة تلقائيًا ؛ إذا كان هناك عدة حبوب من هذا النوع ، فسيتم تشغيل استثناء ويتم الإشارة إلى أنه لا يمكن استخدام التجميع التلقائي حسب النوع ؛ إذا لم يتم العثور على حبة مطابقة ، فلن يحدث شيء.
الاسم المزعوم يعني التجميع التلقائي بناءً على اسم السمة. سيقوم هذا العنصر بفحص الفاصوليا في حاوية الربيع التي هي بالضبط نفس اسم السمة وتنفيذ التجميع التلقائي.
requestmapping (عنوان طلب الخريطة)
يمكن استخدام التعليقات التوضيحية المستخدمة للتعامل مع تعيينات العنوان المطلوبة في الفصول أو الأساليب. للاستخدام في الفصل ، جميع الطرق التي تمثل طلبات الاستجابة في الفصل تأخذ هذا العنوان كمسار الأصل.
هناك ست سمات ، وهي:
1. القيمة ، الطريقة ؛
القيمة: يحدد العنوان الفعلي للطلب ، ويمكن أن يكون العنوان المحدد في وضع قالب URI (والذي سيتم شرحه لاحقًا) ؛
الطريقة: حدد نوع الطريقة المطلوبة ، الحصول على ، نشر ، وضع ، حذف ، إلخ. ؛
2. يستهلك ، ينتج
المستهلكون: يحدد نوع التقديم (نوع المحتوى) الذي يتولى الطلب ، مثل التطبيق/json ، text/html ؛
ينتج: يحدد نوع المحتوى الذي تم إرجاعه ، والذي سيتم إرجاعه فقط إذا كان رأس (قبول) في رأس الطلب يحتوي على النوع المحدد ؛
3. بارامز ، الرؤوس
Params: يحدد أن الطلب يجب أن يحتوي على قيم معلمة معينة قبل أن تتم معالجة الطريقة.
الرؤوس: يحدد أن الطلب يجب أن يحتوي على بعض قيم الرأس المحددة من أجل أن تتعامل الطريقة مع الطلب.
@controller@requestmapping ("/bbtforum.do") الفئة العامة bbtforumController {rquestmapping (params = "method = listboardTopic") public bubkingboardtopic (int topicID ، user user) {}}} requestmapping ("/softpg/downsoftpg.do" method = requestmethod.post)@requestmapping (value = "/osu/product/delieve.do" ، params = {"modify = false"} ، method = requestMethod.post)requestparam (احصل على قيمة معلمة الطلب)
على سبيل المثال ، عنوان الوصول الخاص بنا في المتصفح هو: LocalHost: 8080/Hello؟ id = 1000 ، ونحصل على قيمة المعرف ، على سبيل المثال:
RestControllerPublic Class HelloconTroller { @requestmapping (value = "/hello" ، method = requestMethod.get) SealherHello ( @requestparam ("id") integer id) {return "id:"+id ؛ }}@pathvaribale (احصل على البيانات في URL)
RestControllerPublic Class HelloconTroller { @requestmapping (value = "/hello/{id}" ، method = requestMethod.get) سلسلة عامة sealhello (pathvariable ("id") integer id) {return "id:"+id ؛ }}ResponseBody (نوع الإرجاع JSON)
الوظيفة: يتم استخدام هذا التعليق التوضيحي لتحويل الكائن الذي يتم إرجاعه بواسطة طريقة وحدة التحكم إلى التنسيق المحدد من خلال httpmessageConverter المناسب واكتبه إلى منطقة بيانات الجسم لكائن الاستجابة.
حان الوقت للاستخدام: البيانات التي تم إرجاعها ليست صفحة ذات علامة HTML ، ولكن يتم استخدامها عند البيانات بتنسيق آخر (مثل JSON ، XML ، إلخ) ؛
لخص
ما سبق هو تحليل التعليقات التوضيحية الشائعة في SpringMVC التي قدمها لك المحرر. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!