YAML לרשימת החפצים במגף האביב

1. סקירה כללית

במדריך קצר זה, אנו נבחן מקרוב כיצד למפות רשימת YAML לתוך רשימה באביב המגף.

ראשית נתחיל עם קצת רקע כיצד להגדיר רשימות ב- YAML. לאחר מכן, נעמיק יותר כדי לראות כיצד לאגד רשימות YAML רשימהs של חפצים.

2. סיכום מהיר אודות רשימות ב- YAML

בקיצור, YAML הוא תקן סידור נתונים לקריאה אנושית המספק דרך תמציתית וברורה לכתוב קבצי תצורה. הדבר הטוב ב- YAML הוא העובדה שהוא תומך במספר סוגי נתונים כגון רשימהs, מַפָּהs, וסוגי סקלר.

האלמנטים ברשימת YAML מוגדרים באמצעות התו "-" וכולם חולקים את אותה רמת כניסה:

yamlconfig: רשימה: - item1 - item2 - item3 - item4

לשם השוואה, המקבילה מבוססת המאפיינים משתמשת במדדים:

yamlconfig.list [0] = item1 yamlconfig.list [1] = item2 yamlconfig.list [2] = item3 yamlconfig.list [3] = item4

לקבלת דוגמאות נוספות, אל תהסס להעיף מבט במאמר שלנו כיצד להגדיר רשימות ומפות באמצעות קבצי YAML ומאפיינים.

למען האמת, האופי ההיררכי של YAML משפר משמעותית את הקריאות בהשוואה לקבצי מאפיינים. מאפיין מעניין נוסף של YAML הוא האפשרות להגדיר מאפיינים שונים עבור פרופילי אביב שונים.

ראוי להזכיר כי Spring Boot מספק תמיכה מחוץ לקופסה לתצורת YAML. לפי תכנון, Spring Boot טוען מאפייני תצורה מ- application.yml בעת ההפעלה ללא כל עבודה נוספת.

3. כריכת רשימת YAML לפשוטה רשימה של אובייקטים

מגף האביב מספק את @ConfigurationProperties ביאור ל לפשט את ההיגיון של מיפוי נתוני תצורה חיצוניים למודל אובייקט.

בחלק זה נשתמש @ConfigurationProperties לאגד רשימת YAML לא רשימה.

אנו מתחילים בהגדרת רשימה פשוטה ב- application.yml:

יישום: פרופילים: - dev - test - prod - 1 - 2

לאחר מכן, ניצור פשוט ApplicationProps POJO להחזיק את ההיגיון של קישור רשימת YAML שלנו ל- a רשימה שֶׁלחפצים:

@Component @ConfigurationProperties (קידומת = "יישום") מחלקה ציבורית ApplicationProps {פרופילי רשימה פרטית; // גטר וקובע}

ה ApplicationProps צריך לקשט את הכיתה @ConfigurationProperties לבטא את הכוונה למיפוי כל מאפייני YAML עם הקידומת שצוינה לאובייקט של ApplicationProps.

לאגד את פרופילים ברשימה אנחנו רק צריכים להגדיר שדה מסוג רשימה וה @ConfigurationProperties ההערה תדאג לשאר.

שימו לב שאנחנו רושמים את ApplicationProps בכיתה כשעועית אביב רגילה באמצעות @רְכִיב. כתוצאה מכך, אנו יכולים להזריק אותו לשיעורים אחרים באותו אופן כמו כל שעועית אביבית אחרת.

לבסוף, אנו מזריקים את ApplicationProps שעועית לשיעור בדיקה וודא אם שלנו פרופילים רשימת YAML הוזרקה כראוי כ- רשימה:

@ExtendWith (SpringExtension.class) @ContextConfiguration (initializers = ConfigFileApplicationContextInitializer.class) @EnableConfigurationProperties (value = ApplicationProps.class) class YamlSimpleListUnitTest {@Autowired privateProps applicationProps; @ מבחן ציבורי בטל כאשר YamlList_thenLoadSimpleList () {assertThat (applicationProps.getProfiles (). Get (0)). IsEqualTo ("dev"); assertThat (applicationProps.getProfiles (). get (4) .getClass ()). isEqualTo (Integer.class); assertThat (applicationProps.getProfiles (). size ()). isEqualTo (5); }}

4. כריכת רשימות YAML לרשימות מורכבות

עכשיו, בואו נצלול עמוק יותר ונראה כיצד להזריק רשימות YAML מקוננות למבנה מורכב רשימהס.

ראשית, בואו נוסיף כמה רשימות מקוננות application.yml:

יישום: // ... אביזרים: - שם: YamlList url: //yamllist.dev תיאור: רשימת מיפוי ב- Yaml לרשימת אובייקטים ב- Spring Boot - ip: 10.10.10.10 יציאה: 8091 - דוא"ל: [איש קשר מוגן] : //yamllist.dev/contact משתמשים: - שם משתמש: סיסמת מנהל: [מוגן באמצעות דוא"ל] @ תפקידים: - קרא - כתוב - צפה - מחק - שם משתמש: סיסמת אורח: [דוא"ל מוגן] תפקידים: - צפה

בדוגמא זו, אנו נקשר את ה- אביזרים נכס לא רשימה. באופן דומה, נמפה משתמשים לתוך רשימה שֶׁל מִשׁתַמֵשׁ חפצים.

מאז כל אלמנט של אביזרים הכניסה מחזיקה במקשים שונים ואז נוכל להזריק אותה כ- רשימה שֶׁל מַפָּהס. הקפד לבדוק את המאמר שלנו כיצד להזריק מפה מקובץ YAML באביב אתחול.

למרות זאת, במקרה של משתמשים, כל הפריטים חולקים את אותם המקשים, כדי לפשט את המיפוי שלו, ייתכן שנצטרך ליצור ייעודי מִשׁתַמֵשׁ מחלקה כדי להכיל את המפתחות כשדות:

מחלקה ציבורית ApplicationProps {// ... רשימה פרטית אביזרים; משתמשים פרטיים ברשימה; // גטרים וקובעים מחלקה סטטית ציבורית משתמש {פרטי שם משתמש מחרוזת; סיסמת מחרוזת פרטית; תפקידי רשימה פרטיים; // גטרים וקובעים}}

כעת אנו מוודאים כי רשימות ה- YAML המקוננות שלנו ממופות כהלכה:

@ExtendWith (SpringExtension.class) @ContextConfiguration (initializers = ConfigFileApplicationContextInitializer.class) @EnableConfigurationProperties (value = ApplicationProps.class) class YamlComplexListsUnitTest {@Autowired privateProps applicationProps; @ מבחן ציבורי בטל כאשר YamlNestedLists_thenLoadComplexLists () {assertThat (applicationProps.getUsers (). Get (0) .getPassword ()). IsEqualTo ("[email protected] @"); assertThat (applicationProps.getProps (). get (0) .get ("שם")). isEqualTo ("YamlList"); assertThat (applicationProps.getProps (). get (1) .get ("port"). getClass ()). isEqualTo (Integer.class); }}

5. מסקנה

במדריך זה למדנו כיצד למפות רשימות YAML לג'אווה רשימהס. בדקנו גם כיצד לאגד רשימות מורכבות ל- POJO מותאמים אישית.

כמו תמיד, קוד המקור השלם למאמר זה זמין באתר GitHub.


$config[zx-auto] not found$config[zx-overlay] not found