1. جافا التعليقات التوضيحية المخصصة والربيع
التعليقات التوضيحية Java ، كنوع من معلومات البيانات الوصفية لعناصر البرنامج (الفئات ، متغيرات الأعضاء ، أساليب الأعضاء ، إلخ) ، ليس لها أي تأثير على تنفيذ البرنامج نفسه. من خلال التعليقات التوضيحية المخصصة ، يمكنك إضافة إعلانات خاصة إلى عناصر البرمجة.
كمنصة لبناء تطبيقات على مستوى المؤسسة ، يوفر Spring وظائف غنية. إن الجمع بين التعليقات التوضيحية المخصصة لـ Java مع Spring لتنفيذ تحليل التعليقات التوضيحية ومعالجتها في سيناريوهات محددة يمكن أن تقلل من درجة الاقتران من التطبيقات وتحسين قابلية التوسع في البرنامج.
2. سيناريوهات التطبيق
ما يلي يلخص العديد من سيناريوهات التطبيق ويشرح فقط الفكرة العامة (PS: لم يتم ممارسة جميع السيناريوهات في المشروع)
2.1 تسجيل الدخول ، حظر إذن
في مشاريع الويب ، يعد اعتراض تسجيل الدخول واعتراض الإذن وظيفة كليشيهات. من خلال تعليقات تسجيل الدخول المخصصة أو تعليقات التعليقات التوضيحية للذات ، تواجه التعليقات التوضيحية في المعترض المخصص لإدراك وظائف اعتراض تسجيل الدخول والإذن.
هذه الطريقة للاستخدام لها تكوين بسيط ومرونة عالية وقران منخفض الرمز.
2.2 إدارة مهمة التوقيت
أثناء عملية بناء النظام ، سيكون هناك العديد من متطلبات المهام المحددة في الوقت ، ويمكن للإدارة المركزية للمهام المحددة الوقت الحفاظ على تشغيل النظام بشكل أكثر كفاءة.
يمكن أن تدرك التعليقات التوضيحية المخصصة لمهمة التوقيت في الفصل التكرار في وثيقة التعليقات التوضيحية الرسمية Java ، إعلان مهمة التوقيت لأساليب العمل. جنبا إلى جنب مع حاوية الربيع ما بعد المعالج Beanpostprocessor (PS: سيتم مناقشة Postprocessor حاوية الربيع في المقالة التالية) ، مما يفسد التعليقات التوضيحية المخصصة. ثم يتم استخدام معلومات التعليق التوضيحي المحسّن لإنشاء مهمة توقيت وقت التشغيل باستخدام Quartzapi ، والتي يمكن أن تكمل إنشاء وقت التشغيل والإدارة المركزية لمهمة التوقيت.
يمكن أن تتجنب هذه الطريقة تحديد تكوين مهام توقيت الكوارتز وتحسين قابلية توسيع النظام.
2.3 مواصفات مصدر البيانات لتوجيه مصدر البيانات المتعددة
AbstractRoutingDataSource التي توفرها Spring تنفذ التوجيه الديناميكي لمصادر البيانات المتعددة ويمكن تطبيقها تحت بنية فصل ماجستير. من خلال تحديد مصادر بيانات مختلفة لطرق مختلفة ، يتم تحقيق التوجيه الديناميكي لمصادر البيانات (على سبيل المثال: طرق القراءة تنتقل من مصدر بيانات قاعدة بيانات الرقيق ، انتقل طرق الكتابة من مصدر بيانات قاعدة البيانات الرئيسية). كيفية تحديد نوع مصدر البيانات المقابل لطرق مختلفة يمكن تنفيذها باستخدام التعليقات التوضيحية المخصصة. يتم تحقيق وظيفة التوجيه لمصدر البيانات من خلال تحليل نوع مصدر البيانات المقابل المعلن على الطريقة.
تتجنب هذه الطريقة تحليل طرق مطابقة الأنماط (على سبيل المثال: بدءًا من Select ، بدءًا من التحديث ، وما إلى ذلك) ، والإعلان أكثر مرونة.
التعليقات التوضيحية المخصصة
دعونا نلقي نظرة على أبسط مثال. في عملية استخدام تطبيقات SpringWeb ، نستخدم حتماً controller و service و repository وغيرها من التعليقات التوضيحية لتحديد Javabeans. فكيف يمكنك تحديد التعليق التوضيحي بنفسك؟ يمكن تحميل الربيع تلقائيا. لذلك هناك المثال الأول.
target ({elementType.type})@entry (attreencepolicy.runtime)@documented@compentpublic@interface myComponent {string value () افتراضي "؛} ConfigurationPublic Class ComponentAntAntAntest {public static void main (string [] args) {enrotationConfigapplicationContext innotationConfigPlicationContext = new enronotationConfigPlicationContext () ؛ enrotationConfigplicationContext.geister anotationConfigPlicationContext.refresh () ؛ agjectClass enjectClass = annotationConfigPlicationContext.getBean (enjectClass.class) ؛ enjectClass.print () ؛ } myComponent public static class enjectClass {public void print () {system.out.println ("Hello World") ؛ }}}قم بتشغيل هذا المثال وستجد أن الفصل المشروع بواسطة myComponent يتم تحميله أيضًا بحلول الربيع ويمكن استخدامه بشكل طبيعي كجافابين عادي. التحقق من رمز مصدر الربيع ، ستجد أن Spring يستخدم ClassPathScanningCandIdateComponentProvider لمسح الحزمة. هذا الفصل لديه مثل هذا التعليق التوضيحي.
موفر مكون يقوم بمسح ClassPath من حزمة قاعدة. ثم ينطبق على استبعاد وتضمين المرشحات على الفصول الناتجة للعثور على المرشحين.
تحتوي طريقة RecordDefaultFilters على هذه الفئة عدة أسطر من التعليمات البرمجية
void void registerDefaultFilters () {this.includefilters.add (annotationTytypefilter (component.class)) ؛ classloader cl = classPathScanningCandIdateComponentProvider.class.getClassLoader () ؛ جرب {this.includefilters.add (annotationtytypefilter جديد (((الفئة <؟ يمتد التعليق التوضيحي>) classutils.forname ("javax.annotation.managedbean" ، cl)) ، false)) ؛ logger.debug ("JSR-250 'javax.annotation.managedbean' تم العثور عليه ودعمه لمسح المكونات") ؛ } catch (classnotfoundException ex) {// JSR -250 1.1 API (كما هو متضمن في Java EE 6) غير متوفر - ببساطة تخطي. } جرب {this.includefilters.add (annotationTytypefilter جديد (((الفئة <؟ تمديد التعليقات التوضيحية>) classutils.forname ("javax.inject.named" ، cl)) ، false)) ؛ logger.debug ("jsr-330 'javax.inject.named" تم العثور عليها ودعمها لمسح المكونات ") ؛ } catch (classnotfoundException ex) {// JSR -330 API غير متوفر - ببساطة تخطي. }}ستجد هنا أن استخدام SPRING لمعلومات فئة المسح لن يحكم إلا على الفئة المشروطة بواسطة component ، لذلك يمكن مسح أي تعليق توضيحي مخصص بحلول فصل الربيع وحقنه في الحاوية طالما تم تجهيزه بـ component (بالطبع ، يجب أن تكون هناك قيمة سلسلة () "؛ طريقة ، لأن حبوب الربيع مميزة بشكل خاص بالفاصولياء).
لخص
ما سبق يدور حول مناقشة هذه المقالة وجيزة حول تطبيق التعليقات التوضيحية المخصصة في الربيع ، وآمل أن يكون ذلك مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!