في ملفات تكوين الربيع ، غالبًا ما نضع أنواعًا مختلفة من قيم الخصائص من الفاصوليا من خلال القيم الحرفية ، ويتم تنفيذ هذه الوظيفة من خلال محرر الممتلكات.
أي فئة تنفذ واجهة Java.beans.PropertyEditor هي محرر عقارات. يمكنه تحويل القيمة الخارجية المراد تعيينها على النوع المقابل داخل JVM ، بحيث يكون محرر الخصائص هو في الواقع محول نوع.
1 محرر جافابان
تم إعداد محرر Javabean الذي طورته Sun إلى حد كبير للأجهزة الدولية للهجرة. يسمح لـ IDE بتعيين خصائص Javabeans بصريًا.
تحدد Java طريقة تعيين خصائص Javabean من خلال Java.Beans.PropertyEditor. من خلال BeanInfo ، يصف خصائص Javabean قابلة للتخصيص. بالإضافة إلى ذلك ، يصف أيضًا المراسلات بين الخصائص القابلة للتخصيص و perffecteditor.
يتم إنشاء المراسلات بين Beaninfo و Javabean من خلال تسمية المعيار بين الاثنين. يعتمد BeanInfo المقابل لـ Javabean مواصفات التسمية التالية: <Bean> BeanInfo. على سبيل المثال ، BeanInfo المقابلة لـ Bookbean هو Bookbeanbeaninfo. عندما يتم تسجيل javabean مع IDE مع محرر السمات الخاص به ، عندما يتم تخصيص Javabean في واجهة التطوير ، ستجد IDE BeanInfo المقابل وفقًا لمواصفات Javabean ، ثم العثور على وصف سمة Javabean (الذي يتم استخدام محرر السمة ، وما إلى ذلك) بناءً على وصف المعلومات الواردة في Beaninfo ، ثم تنفيذ عملية تطوير محددة.
توفر Java مديرًا لإدارة محرري العقارات الافتراضية: PropertyEditorManager ، الذي يحمل بعض الأنواع الشائعة من محرري العقارات. إذا لم تحدد خاصية النوع الشائع لجافابان محرر الممتلكات الخاص بها بشكل صريح من خلال BeanInfo ، فسيستخدم IDE تلقائيًا المحرر الافتراضي للخصائص المقابلة المسجلة في PropertyEditorManager.
1.1 PropertyEditor
PropertyEditor هي واجهة محرر الممتلكات التي تحدد طريقة واجهة تقوم بتحويل قيم المجموعة الخارجية إلى قيم خاصية Javabean الداخلية. يتم شرح طرق الواجهة الرئيسية على النحو التالي:
| طريقة | يوضح |
|---|---|
| كائن getValue () | إرجاع القيمة الحالية للسمة ، يتم تغليف النوع الأساسي في نوع الغلاف المقابل |
| setValue void (كائن NewValue) | اضبط قيمة السمة ، يتم تمرير النوع الأساسي كنوع الغلاف |
| سلسلة getastext () | استخدم السلاسل لتمثيل كائنات السمات بحيث يمكن لمحرري السمات الخارجية عرضها بصريًا. إرجاع NULL بشكل افتراضي ، مما يشير إلى أنه لا يمكن تمثيل الخاصية كسلسلة. |
| setastext void (نص سلسلة) | استخدم سلسلة لتحديث القيمة الداخلية للخاصية ، والتي يتم تمريرها بشكل عام من محرر الخصائص الخارجية. |
| سلسلة [] getTags () | إرجاع مجموعة من الأوتار التي تمثل قيم السمات الصحيحة بحيث يمكن لمحرر السمات عرضها بالطريقة التالية. إرجاع فارغ بشكل افتراضي. |
| سلسلة getJavainitializationString () | يوفر قيمة أولية للخاصية ، والتي يستخدمها محرر الممتلكات كقيمة افتراضية للخاصية. |
واجهة PropertyEditor هي جسر اتصال بين قيم الخصائص الداخلية وقيم الإعداد الخارجية.
توفر Java فئة تنفيذ مريحة لـ PropertyEditor: PropertyEditorSupport ، والتي تنفذ واجهة PropertyEditor. يمكننا تصميم محرر العقارات الخاص بنا عن طريق توسيع هذا الفصل.
1.2 وصف سمة الفول (BeanInfo)
يصف BeanInfo الخصائص القابلة للتحرير في Javabean ومحرر الممتلكات المقابلة ، كل خاصية تتوافق مع PropertyDescriptor Property Descriptor.
يحتوي مُنشئ PropertyDescriptor على معلمتان: PropertyDescriptor (سلسلة PropertyName ، فئة Beanclass) ، حيث PropertyName هو اسم الخاصية ؛ Beanclass هو الفئة المقابلة لجافابان.
يحتوي PropertyDescriptor أيضًا على طريقة setPropertyEditorClass (Class PropertyEditorClass) ، والتي تحدد محررًا لخصائص Javabean.
الطريقة الأكثر أهمية في واجهة BeanInfo هي: PropertyDescriptor [] GetPropertyDescriptors () ، والتي ستعيد مجموعة واصف خاصية Javabean.
فئة التنفيذ شائعة الاستخدام لواجهة BeanInfo هي SimpleBeanInfo ، والتي يمكننا تنفيذ وظائف مخصصة عن طريق توسيع هذه الفئة.
2 محرر الممتلكات الافتراضي الربيع
يختلف محرر الممتلكات في الربيع عن محرر العقارات التقليدي لتطوير IDE. لا يحتوي على واجهة واجهة المستخدم ويقوم فقط بتحويل قيمة تكوين النص في ملف التكوين إلى القيمة المقابلة لخاصية Bean.
يوفر Spring محرر عقارات افتراضي لأنواع العقارات المشتركة في PropertyEditorregistRysupport ، والذي ينقسم إلى 3 فئات رئيسية ، بما مجموعه 32:
| يكتب | يوضح |
|---|---|
| أنواع البيانات الأساسية | [1] أنواع البيانات الأساسية ، مثل: منطقية ، int ، إلخ. ؛ [2] فئات تغليف نوع البيانات الأساسية ، مثل: منطقية ، عدد صحيح ، إلخ. ؛ [3] صفائف نوع البيانات الأساسية: char [] و byte [] ؛ [4] أعداد كبيرة: BigDecimal و Biginteger. |
| فئة جمع | جمع ، مجموعة ، sortedset ، قائمة ، و sortedMap. |
| موارد | فئة ، فئة [] ، ملف ، inputStream ، المحطة ، الخصائص ، الموارد [] ، وعنوان url. |
هناك متغيران نوع الخريطة في propertyeditorregistrysupport الذي يحفظ محرري الممتلكات:
| اسم متغير | يوضح |
|---|---|
| الافتراضات | المحرر الذي يحفظ نوع السمة الافتراضي ، ومفتاح العنصر هو نوع السمة ، والقيمة هي مثيل محرر السمة المقابل. |
| مخصصون | حفظ محرري السمات المعرفة من قبل المستخدم ، والقيم الرئيسية للعناصر هي نفس الافتراضات. |
3 محرر خصائص الربيع المخصصة
إذا حدد تطبيقنا نوعًا خاصًا من السمة وأراد تكوين قيمة السمة حرفيًا في ملف التكوين ، فيمكننا كتابة محرر سمة مخصص وتسجيله مع حاوية Spring لتنفيذها.
يمتد معظم محرري العقارات الافتراضي في الربيع من Java.beans.PropertyEditorSupport. يمكننا تخصيص محرر الممتلكات عن طريق توسيع نطاق PropertyEdorSupport. في بيئة الربيع ، تحتاج فقط إلى تحويل القيمة الحرفية في ملف التكوين إلى كائن من نوع الخاصية ، ولا تحتاج إلى توفير واجهة واجهة المستخدم ، لذلك تحتاج فقط إلى تجاوز طريقة setastext () من propertyeditorsupport (∩_∩) o haha ~.
لنفترض أن لدينا كتاب اثنين من الكيان والمؤلف ، ونأمل أنه عند تكوين الكتاب ، يمكننا تعيين اسم المؤلف مباشرة.
book.java
كتاب الطبقة العامة { / *** المؤلف* / مؤلف المؤلف الخاص ؛ / *** عنوان الكتاب*/ اسم السلسلة الخاصة ؛ // حذف طريقة الحصول على/setter}المؤلف
مؤلف الفئة العامة {اسم السلسلة الخاصة ؛ // حذف طريقة الحصول على/setter}أولاً ، قم بتخصيص محرر الممتلكات للمؤلف:
الطبقة العامة CustomPropertyEditor يمتد propertyedItorSupport {Override public void setastext (نص سلسلة) يلقي alfortalargumentException {if (text == null || text.length () == 0) {رمي new alficalArgumentException ("خطأ التنسيق") ؛ } المؤلف = جديد المؤلف () ؛ المؤلف. // استدعاء طريقة الفئة الأصل إلى setValue (المؤلف) ؛ }} إذا كنت تستخدم Beanfactory ، فأنت بحاجة إلى الاتصال يدويًا بطريقة registerCustomEditor(Class requiredType, PropertyEditor propertyEditor) لتسجيل محرر الممتلكات المخصصة ؛ إذا كنت تستخدم ApplicationContext ، فأنت بحاجة فقط إلى تسجيل CustomItorItorConfigurer في ملف التكوين. يقوم CustomEitorConfigurer بتنفيذ واجهة BeanfactoryPostProcessor ، لذلك فهي عبارة عن معالج ما بعد المصنع للفاصوليا.
الآن سجل محرر خاصية مخصصة:
<!-قم بتسجيل محرر خاصية مخصصة-> <bean> <property name = "Customeditors"> <map> <!-المفتاح: نوع الخاصية ؛ القيمة: محرر الممتلكات-> <إدخال مفتاح = "net.deniro.spring4.editor.author" value = "net.deniro.spring4.editor.customPropertyeDitor"/> </pamp> </sprement> </bean> <bean id = "book"> <property name "value =" kafka by the sea "/ value = "Haruki Murakami"/> </ban>
عند تعيين خاصية المؤلف للكتاب ، سيتم استرداد سجل محرر الملكية المخصص. عندما يتم العثور على محرر الممتلكات CustomPropertyEditor المقابلة لنوع خاصية المؤلف ، فإنه سيحول "Haruki Murakami" إلى كائن مؤلف.
وفقًا للمواصفات ، ستبحث Java عن ما إذا كانت فئة <JavaBean>Editor موجودة تحت نفس حزمة الفئة من Javabean ؛ إذا كانت موجودة ، فسيستخدم تلقائيًا <JavaBean>Editor محرر الممتلكات في Javabean. الربيع يدعم أيضا هذه المواصفات.
لذلك إذا كان هناك فئة محرر خاصية تسمى مؤلف مؤلف ضمن حزمة الفئة ، فلا داعي لتسجيل محرر خاصية مخصصة في ملف التكوين O (∩_∩) o هاها ~
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.