يوفر SPRING BOOT ملفين للتكوين شائع الاستخدام ، وهما ملف الخصائص وملف YML. وظيفتهم هي تعديل القيمة الافتراضية للتكوين التلقائي في SPRING BOOT. بالمقارنة مع ملفات الخصائص ، فإن ملفات YML أصغر سنا ولها العديد من المزالق. يمكن القول أن شياو ينجح ويفشل شياو هو. تحدد YML علاقة التسلسل الهرمي من خلال المساحات ، وهي بنية ملف التكوين واضحة ، ولكنها ستدمر أيضًا علاقة التسلسل الهرمي بسبب المساحات غير المهمة. يركز هذا الفصل على بناء جملة YML وأخذ القيم من ملفات التكوين. ماذا تنتظر؟ تعال ودرس بسرعة!
التكنولوجيا: YAML ، بناء جملة الخصائص ، واستخدام التكوين وشرعات القيمة ، واستخدام أصحاب ملفات التكوين
ملاحظة: يركز هذا الفصل على بناء جملة YAML واستخدام تعليقات ConfigurationProperties. يرجى الانتقال إلى github لاختبار رمز وإكمال الرمز. يمكن للأصدقاء الذين يحبون ذلك النقر على نجم.
رمز المصدر: https://github.com/itdragonblog/daydayup/tree/master/springboot/spring-boot-yml
هيكل دليل المقال:
1. مقدمة في YAML
YML عبارة عن ملف بلغة YAML (YAML AIN'T LANGY) ، وهي متمحور حول البيانات وهي أكثر ملاءمة لملفات التكوين من JSON ، XML ، إلخ.
بالمقارنة مع XML ، لدى YML رمزًا أقل تنظيماً ، مما يجعل البيانات أكثر مباشرة وواضحة في لمحة.
ماذا عن YML و JSON؟ لا أحد جيد أو سيء ، والمن هو الأفضل. بناء جملة YML أنيقة من JSON ، مع المزيد من التعليقات التوضيحية القياسية ، وهي مناسبة لملفات التكوين. كتنسيق تبادل الماكينة ، فإن JSON أقوى من YML وهو أكثر ملاءمة لتبادل البيانات لمكالمات API.
1) بناء جملة YAML
السيطرة على العلاقات الهرمية من خلال درجة المسافة البادئة للمساحات. عدد المساحات غير مهم ، طالما أن المساحات الموجودة على اليسار محاذاة ، فهي تعتبر نفس المستوى. لاحظ أنه لا يمكن استخدام علامات التبويب بدلاً من المساحات. وحساسية حساسة. وهو يدعم ثلاثة هياكل بيانات: القيمة الحرفية ، والكائن ، والصفيف ، ويدعم أيضًا الهياكل المركبة.
القيمة الحرفية: سلسلة ، نوع منطقي ، قيمة رقمية ، التاريخ. لا يتم نقل الأوتار افتراضيًا ، وسوف يهرب عروض الأسعار الفردية من الشخصيات الخاصة. يدعم تنسيق التاريخ Yyyy/Mm/DD HH: MM: SS
الكائن: يتكون من أزواج القيمة الرئيسية ، والبيانات في شكل مفتاح: (الفضاء) قيمة. المساحات بعد القولون ضرورية. تحتل كل مجموعة من أزواج القيمة الرئيسية سطرًا واحدًا ويجب أن تكون درجة المسافة البادئة متسقة. يمكنك أيضًا استخدام طريقة الكتابة داخل الخط: {k1: v1 ، .... kn: vn}
Array: يتكون من بيانات ذات شكل من أشكال -(مساحة). المسافات وراء الخط الأفقي القصير ضرورية. تحتل كل مجموعة من البيانات سطرًا واحدًا ويجب أن تكون درجة المسافة البادئة متسقة. يمكنك أيضًا استخدام طريقة الكتابة داخل الخط: [1،2 ، ... n]
الهيكل المركب: أي مزيج من هياكل البيانات الثلاثة أعلاه
2) تطبيق YAML
قم بإنشاء تطبيق ملف Configuration Configuration Global SPRING. هناك بشكل أساسي سلاسل ، سلاسل مع شخصيات خاصة ، أنواع منطقية ، قيم ، مجموعات ، مجموعات في الخط ، الكائنات في الخط ، وكائنات التجميع.
yaml: str: string يمكن أن تكون بدون عروض أسعار خاصة: "اقتباسات مزدوجة الإخراج مباشرة /n شخصيات خاصة" SpecialStr2: 'عروض أسعار فردية يمكن أن تهرب /n من علم الشخصيات الخاصة: false num الراتب: 18888.88
قم بإنشاء فئة Entity Class Yamlentity.java احصل على قيمة الخاصية في ملف التكوين ، واحصل على القيمة المحددة في ملف التكوين عن طريق التعليق @ConfigurationProperties وحقنها في فئة الكيانات. يرجى الاستمرار في النظر إلى أساليب الاختبار المحددة ومبدأ الحصول على القيم!
استيراد org.springframework.boot.context.properties.ConfigurationProperties ؛ استيراد org.springframework.stereotype.Component ؛ استيراد java.util.list (مساحة) القيمة * 2. يحدد عدد المسافات الموجودة على الجانب الأيسر من كل معلمة سطر مستوى المعلمة ، ولا يدخل بشكل عشوائي. */@component@configurationProperties (prefix = "yaml") الفئة العامة yamlentity {// القيمة الحرفية ، السلسلة ، المنطقية ، سلسلة خاصة رقمية ؛ // العادي سلسلة السلسلة الخاصة ؛ . // boolean type private integer num ؛ // Integer Private Double Dnum ؛ // Decimal // Array ، List and Set ، طريقتان للكتابة: الأول: - قيمة الفضاء ، كل قيمة تحتل صفًا واحدًا ، وتحتاج إلى أن تكون بادئة ومحاذاة ؛ والثاني: [1،2 ، ... n] كتابة القائمة الخاصة <Bounds> ؛ // قائمة مجموعة قابلة للتكرار مجموعة خاصة <Object> set ؛ // لا يمكن تكرار Set Set // فئات الخريطة والكيان ، طريقتان للكتابة: الأول: قيمة الفضاء المفتاح ، كل قيمة تحتل سطرًا واحدًا ، وتحتاج إلى أن تكون بادئة ومحاذاة ؛ والثاني: {المفتاح: القيمة ، ....} كتابة الخريطة الخاصة <string ، Object> map ؛ // خريطة KV قائمة خاصة <potort> المواضع ؛ // هيكل المركب ، كائن المجموعة // حذف getter ، setter ، tostring أساليب}3) ملخص YML
1. يمكن أن تكون السلسلة بدون اقتباسات. إذا تمت إضافة عروض أسعار مزدوجة ، فسيتم إخراج الأحرف الخاصة. إذا لم تتم إضافة اقتباسات واحدة ، فسيتم هروب الأحرف الخاصة ؛
2. لنوع الصفيف ، يجب أن يكون هناك مسافات خلف خطوط أفقية قصيرة ؛ لنوع الكائن ، يجب أن يكون هناك مسافات خلف القولون.
3. يتحكم Yaml في العلاقات الهرمية بناءً على درجة المسافة البادئة للمساحة ، ولكن لا يمكن استخدام مفتاح TAB بدلاً من المساحات ، وهو حساس للحالة ؛
4. كيف تصنع مبرمج؟ أضف بضع مسافات إلى ملف YML! (〃> طبق <)
2. مقدمة للخصائص
غالبًا ما يستخدم الجميع ملفات الخصائص ، لذلك سأقدمها باختصار هنا. بنية بناء الجملة مثل: المفتاح = القيمة. انتبه إلى مشكلة الكود المشوهة الصينية وتحتاج إلى نقلها إلى ASCII. التفاصيل كما يلي:
userInfo.Account = itdragonbloguserInfo.age = 25UserInfo.Active = trueUserInfo.created-date = 2018/03/31 16: 54: 30USERINFO.MAP.K1 = V1USERINFO.MAP.K2 = V2USERINFO.List = One ، اثنين ، اثنين userinfo.position.salary = 19999.99
خذ القيم من ملفات التكوين وحقنها في فئات الكيانات ، والتي هي نفس YAML.
استيراد org.springframework.boot.context.properties.ConfigurationProperties ؛ استيراد org.springframework.stereotepee.component ؛ استيراد java.util.date ؛ القيمة في ملف التكوين (تم العثور على القيمة من خلال البادئة)*/@component@configurationProperties (prefix = "userinfo") الفئة العامة userInfo {private string account ؛ عصر عدد صحيح خاص ؛ منطقية خاصة نشطة ؛ تاريخ خاص CreatedDate ؛ خريطة خاصة <سلسلة ، كائن> خريطة ؛ قائمة خاصة <Object> ؛ موقف الموقف الخاص ؛ // حذف Getter ، Setter ، Tostring Methods}3. قيمة ملف التكوين
يحصل SPRING BOOT على خصائص من ملفات التكوين من خلال توضيح ConfigurationProperties. من المثال أعلاه ، يمكننا أن نرى أن توضيح ConfigurationProperties يمكن أن يحدد البيانات التي يجب استيرادها على دفعات عن طريق تعيين بادئة. يدعم الحصول على بيانات معقدة مثل الحرفيين ، والمجموعات ، والخرائط ، والكائنات ، وما إلى ذلك ، هل هناك أي شيء آخر حول توضيح ConfigurationProperties؟ ما هو الفرق بينه وتوضيح قيمة الربيع؟ مع وضع هذه الأسئلة في الاعتبار ، دعنا نستمر في النظر إلى أسفل. (๑ • ̀ㅂ • ́) و
أ) إيجابيات وسلبيات التكوين والقيمة
إيجابيات وسلبيات التكوين التعليقات التوضيحية
1. يمكنك دفع خصائص حقن من ملف التكوين ؛
2. يدعم الحصول على أنواع البيانات المعقدة ؛
3. يمكن أن تحصل جميع متطلبات مطابقة أسماء السمات ، مثل اسم المستخدم ، و user_name ، و username ، و user_name.
4. دعم التحقق من بيانات JSR303 من Java ؛
5. العيب هو أنه لا يدعم تعبيرات Spel القوية ؛
مزايا وعيوب التعليقات التوضيحية القيمة هي مجرد عكس ذلك. يمكنه فقط تكوين قيمة الحقن واحدة تلو الأخرى ؛ لا يدعم أنواع البيانات المعقدة مثل المصفوفات والمجموعات ؛ لا يدعم التحقق من البيانات ؛ لديها متطلبات صارمة لمطابقة اسم الممتلكات. أكبر ميزة هي أنه يدعم تعبيرات SPEL ، مما يجعلها أكثر ثراءً.
2) configurationProperties شرح مفصل
الخطوة 1: استيراد التبعيات. لاستخدام شرح توضيح ConfigurationProperties ، تحتاج إلى استيراد المعالجة التبعية لتكوين الربيع ؛
الخطوة 2: تكوين البيانات. في ملف تكوين Application.yml ، قم بتكوين معلمات السمة ، المسبقة بواسطة ITDragon ، والمعلمات لها قيمًا محربة ومصفوفات ، والتي يتم استخدامها لتحديد القدرة على الحصول على سمات معقدة ؛
الخطوة 3: مطابقة البيانات. أضف تكوين التعليقات التوضيحية على الفئة وتعيين قيمة خاصية البادئة على ITDragon. وأضف هذا الفصل إلى حاوية IOC في الربيع.
الخطوة 4: تحقق من البيانات. أضف التحقق من التحقق من صحة البيانات ، وتمكين التحقق من البيانات ، واختبار ما إذا كان يدعم التحقق من البيانات ؛
الخطوة 5: اختبار ما إذا كان توضيح ConfigurationProperties يدعم تعبيرات SPEL ؛
تبعيات الاستيراد: pom.xml أضف التبعيات المعالجة بالتكوين الربيعي
<Rependency> <roupeD> org.springframework.boot </rougiD> <intifactid> Spring-Boot-Configuration-Processor </stifactid> <اختياري> صحيح </experenal> </respency>
بيانات التكوين: Application.yml معلمات خاصية التكوين ، يتم استخدام Nick-Name للحكم على رفاهية خصائص المطابقة. إذا تم تغييره إلى Nick_name ، فلا يزال بإمكانك الحصول على القيمة.
Itdragon: Nick-Name: Itdragonblog البريد الإلكتروني: [email protected] iPhone: 1234567890 القدرات: [Java ، SQL ، HTML] تم إنشاؤها _date: 2018/03/31 15:27:30:30
تطابق البيانات والتحقق منها:
استيراد org.springframework.boot.context.properties.ConfigurationProperties ؛ استيراد org.springframework.stereotepe..component ؛ استيراد org.springframewew java.util.list ؛/*** configurperties endation syntax class* الخطوة 1: استيراد التبعية spring-boot-configuration-processor ؛ * الخطوة 2: أضف الفصل المعدل بواسطة توضيح ConfigurationProperties إلى حاوية IOC في الربيع ؛ * الخطوة 3: اضبط سمة البادئة وحدد البادئة التي يجب حقنها ؛ * الخطوة 4: إضافة شرح التحقق من البيانات لتمكين التحقق من البيانات ؛ *. configurationProperTiesentity {لقب السلسلة الخاصة ؛ // التحليل بنجاح ، ودعم سمات المطابقة الفضفاضة على البريد الإلكتروني السلسلة الخاصة ؛ // eMail // فشل التحليل ، وكان التحقق من البيانات ناجحًا: BindValidationException: أخطاء التحقق من صحة الربط على Itdragon Private String iPhone ؛ القائمة الخاصة <String> قدرات ؛ تاريخ خاص CreatedDate ؛ // التحليل بنجاح ، ودعم سمات المطابقة الفضفاضة //configurationProperties ("#{(1+2-3)/4*5}") سلسلة السلسلة الخاصة ؛ // خطأ في بناء الجملة ، لا يدعم تعبير Spel: لا ينطبق على الحقل // حذف Getter ، Setter ، ToString Methods}3) تفسير تفصيلي
قدمت المدونة السابقة استخدام توضيحات القيمة ، وهنا تفسير موجز.
الخطوة 1: إضافة توضيح القيمة إلى السمة وحقن القيمة من ملف التكوين من خلال معلمة الإعداد $ {} ؛
الخطوة 2: تعديل قيمة المعلمة في $ {itdragon.ceatred_date} وقم بتغييرها إلى $ {itdragon.ceatreddate} لاختبار ما إذا كان التحليل يمكن أن يكون ناجحًا ؛
الخطوة 3: إضافة التحقق من التحقق من صحة البيانات ، وتمكين التحقق من البيانات ، واختبار ما إذا كان يدعم التحقق من البيانات ؛
الخطوة 4: اختبار ما إذا كان شرح القيمة يدعم تعبيرات Spel ؛
استيراد org.springframework.beans.factory.annotation.value ؛ استيراد org.springframework.stereotype.component ؛ استيراد org.springframework.validation.antation.validated ؛ فئة بناء الجملة* الخطوة 1: أضف معلمات حقن قيمة التعليقات التوضيحية على السمات* الخطوة 2: أضف التصنيف المعدل بواسطة شرح القيمة إلى حاوية الربيع IOC ؛ * الخطوة 3: إضافة شرح التحقق من البيانات للتحقق مما إذا كان التحقق من البيانات مدعومًا ؛ * * نقاط ملاحظة: * 1. اللقب والإنشاء في ملف تكوين YML ، فإن المعلمات المقابلة هي شبكات وموثوقة ، على التوالي ، تستخدم لاختبار رخاوة أسماء السمات * 2. * 2. نظرًا لأنه لإضافة تعليقات التحقق من صندوق البريد على iPhone ، لا يزال بإمكانك اجتياز الاختبار. * 3. بنية البيانات المعقدة غير مدعومة ، والخطأ المذهل هو نفس الخط الأول: alficalArgumentException: لا يمكن حل العنصر النائم 'itdragon.abilities' في القيمة "$ {itdragon.abilities}" */@component@eventionpublic class {$ {$ {itdragon.nick-name}} ") value ("$ {itdragon.email}") البريد الإلكتروني الخاص بالسلسلة الخاصة ؛ eMailvalue ("$ {itdragon.iphone}") // التحليل ناجح ولا يتم التحقق من التحقق من البيانات الخاصة بـ iPhone ؛ أخطاء تحليل ، لا تدعم خصائص المطابقة الفضفاضة ، ويجب أن تكون تاريخ خاص ثابت تمامًا. // الجانب القوي من توضيح القيمة: يدعم SPEL ExpressionValue ("#{(1+2-3)/4*5}") value ("#{1> 2 || 2 <= 3}") // عملية المقارنة المنطقية الخاصة ؛ Value ("#{systemproperties ['java.version']}") // تكوين النظام: OS.Name private string systemproperties ؛ value ("#{t (java.lang.math) .abs (-18)}") // التعبير سلسلة mapexpression ؛ // حذف Getter ، Setter ، Tostring Methods}4) ملخص قيمة ملف التكوين
1. تدعم التعليقات التوضيحية ConfigurationProperties حقن الدُفعات ، في حين أن التعليقات التوضيحية ذات القيمة مناسبة للحقن المفرد ؛
2. توضيحات التكوين strenotations تدعم التحقق من البيانات ، في حين أن توضيحات القيمة لا ؛
3. تعليقات ConfigurationProperties تدعم خصائص مطابقة فضفاضة ، في حين يجب أن تتطابق التعليقات التوضيحية ذات القيمة بشكل صارم ؛
4. لا يدعم ConfigurationProperties تعبيرات SPEL القوية ، لكن القيمة تدعمها ؛
4.
العناصر النائبة والأرقام العشوائية بسيطة نسبيًا ، لذلك سأقوم بنشر الكود هنا مباشرة. ما تجدر الإشارة إليه هو:
1. يجب أن تكون قيمة العنصر النائب هي المسار الكامل
2. اضبط القيمة الافتراضية للعنصر النائب ، يجب ألا يكون هناك أي مساحة بعد القولون
RAN: # لا يمكن أن تكون البادئة هنا عشوائية ، run-value: $ {random.value} ran-int: $ {random.int} run-long: $ {random.long} ran-int-num: $ {random.int (10)} run-in-range: $ {10،20] والمفتاح هو المسار الكامل} استيراد org.springframework.boot.context.properties.ConfigurationProperties ؛ استيراد org.springframework.stereotype.component ؛/*** الرقم العشوائي والرائحة العشوائية للبناء العلوي*/@component@configurationProperties (precix = "ran") // قم بإنشاء سلسلة عدد صحيح من سلسلة integer بشكل عشوائي ؛ // توليد عشوائيا عدد صحيح طويل رانلونغ. // توليد عشوائيًا عددًا صحيحًا عددًا خاصًا. . userInfo ؛ @autowired Yamlentity Yamlentity ؛ AUTOWIRED CONFIGURETPROPERTIESENTITY CONFIGURITERISENTITY ؛ @autowired قيمة القيمة الخاصة ؛ @autowired العشوائية العشوائية ؛ Test public void contextloads () {// system.out.println ("yaml grammar: " + القيمة) ؛ System.out.println ("قواعد عشوائية:" + عشوائية) ؛ }}5. ملخص
1. يدعم Boot Spring ملفات التكوين بتنسيقين ، من بينها هيكل بيانات YAML أكثر وضوحًا من الخصائص.
2. YAML هي لغة تستخدم خصيصًا لكتابة ملفات التكوين ، وهي موجزة وقوية للغاية.
3. YAML لديه متطلبات صارمة على المساحات ولا يمكن استبداله بمفتاح TAB.
4. يحدد YAML المستوى من خلال درجة المسافة البادئة للمساحة ، مع مسافات تتبع القولون والمساحات التي تتبع الخط الأفقي القصير.
5. توضيحات التكوين مناسبة لحقن الدُفعات للخصائص في ملفات التكوين ، وتوضيحات القيمة مناسبة للحصول على عنصر في ملف التكوين.
6. تدعم توضيحات ConfigurationProperties اختبارات البيانات للحصول على بيانات معقدة ، ودعم التعليقات التوضيحية القيمة تعبيرات SPEL.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.