מדריך למטא נתונים של תצורת אתחול האביב

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

בעת כתיבת יישום Spring Boot, כדאי למפות את מאפייני התצורה על גבי שעועית Java. אולם, מה הדרך הטובה ביותר לתעד מאפיינים אלה?

במדריך זה, נחקור את מעבד התצורה של Spring Boot ואת קבצי המטא-נתונים המשויכים JSON המתעדים את המשמעות של כל נכס, אילוצים וכו '.

2. מטא נתונים של תצורה

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

כדי לעזור לנו, Spring Boot מייצר מטא-נתונים של תצורה בקובץ JSON, המספק לנו מידע שימושי על אופן השימוש במאפיינים. כך, מטא הנתונים של התצורה הם קובץ תיאורי המכיל את המידע הדרוש לאינטראקציה עם מאפייני התצורה.

הדבר הנחמד באמת בקובץ זה הוא IDEs יכולים לקרוא את זה גם כן, נותן לנו השלמה אוטומטית של מאפייני האביב, כמו גם רמזים אחרים לתצורה.

3. תלות

על מנת ליצור מטא נתונים של תצורה זו, נשתמש במעבד התצורה מה- מעבד קפיץ-אתחול-תצורה תלות.

אז בואו נמשיך להוסיף את התלות כ אופציונאלי:

 org.springframework.boot spring-boot-configuration-processor 2.1.6.RELEASE נכון 

תלות זו תספק לנו מעבד הערות Java המופעל בעת בניית הפרויקט שלנו. נדבר בפירוט על כך בהמשך.

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

4. דוגמה לתכונות תצורה

כדי לראות את המעבד בפעולה, נדמיין שיש לנו כמה מאפיינים שעלינו לכלול ביישום Spring Boot שלנו באמצעות שעועית ג'אווה:

@Configuration @ConfigurationProperties (קידומת = "מסד נתונים") מחלקה ציבורית DatabaseProperties {מחלקה סטטית ציבורית שרת {IP פרטי מחרוזת; נמל אינטר פרטי; // getters וקובעים סטנדרטיים} שם משתמש פרטי מחרוזת; סיסמת מחרוזת פרטית; שרת שרת פרטי; // סטרים וקובעים סטנדרטיים}

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

בואו נוסיף כמה מאפיינים אלה לקובץ מאפיינים. במקרה זה נקרא לזה databaseproperties-test.properties:

# מאפיינים פשוטים database.username = baeldung database.password = סיסמה

וכדי לוודא, נוסיף גם מבחן כדי לוודא שכולנו מסודרים:

@RunWith (SpringRunner.class) @SpringBootTest (מחלקות = AnnotationProcessorApplication.class) @TestPropertySource ("classpath: databaseproperties-test.properties") מסד נתונים ציבורי מסד נתונים פרטי: מאפיינים פרטיות; @ מבחן ציבורי בטל כאשר SimplePropertyQueriedThenReturnsPropertyValue () זורק Exception {Assert.assertEquals ("מאפיין שם משתמש מאוגד באופן שגוי", "baeldung", databaseProperties.getUsername ()); Assert.assertEquals ("מאפיין סיסמה מאוגד באופן שגוי", "סיסמה", databaseProperties.getPassword ()); }}

הוספנו גם את הנכסים המקוננים database.server.id ו database.server.port דרך המעמד הפנימי שרת. עלינו להוסיף את המעמד הפנימי שרת כמו גם שדה שרת עם הגטר והגדר שלה.

בבדיקה שלנו, בואו נבדוק במהירות כדי לוודא שנוכל להגדיר ולקרוא גם נכסים מקוננים בהצלחה:

@Test ציבורי בטל כאשר NestedPropertyQueriedThenReturnsPropertyValue () זורק Exception {Assert.assertEquals ("מאפיין מקושר של שרת IP מקושר בצורה שגויה", "127.0.0.1", databaseProperties.getServer (). GetIp ()); Assert.assertEquals ("מאפיין מקונן של יציאת שרת מאוגדת באופן שגוי", 3306, databaseProperties.getServer (). GetPort ()); }

אוקיי, עכשיו אנחנו מוכנים להשתמש במעבד.

5. יצירת מטא נתונים של תצורה

הזכרנו קודם כי מעבד התצורה מייצר קובץ - הוא עושה זאת באמצעות עיבוד הערות.

לכן, לאחר הידור הפרויקט שלנו, נראה קובץ שנקרא spring-configuration-metadata.json בְּתוֹך יעד / מחלקות / META-INF:

{"groups": [{"name": "database", "type": "com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties", "sourceType": "com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties"}, {" שם ":" database.server "," type ":" com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties $ Server "," sourceType ":" com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties "," sourceMethod ":" getServer ( ) "}]," מאפיינים ": [{" name ":" database.password "," type ":" java.lang.String "," sourceType ":" com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties "}, {"name": "database.server.ip", "type": "java.lang.String", "sourceType": "com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties $ Server"}, {"name": " database.server.port "," type ":" java.lang.Integer "," sourceType ":" com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties $ Server "," defaultValue ": 0}, {" name ":" database.username "," type ":" java.lang.String " , "sourceType": "com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties"}], "hints": []}

לאחר מכן, בואו נראה כיצד שינוי ההערות על שעועית הג'אווה שלנו משפיעים על המטא נתונים.

5.1. מידע נוסף על מטא נתונים של תצורה

ראשית, בואו נוסיף הערות על JavaDoc שרת.

שנית, בואו ניתן ערך ברירת מחדל ל- database.server.port ולבסוף להוסיף את @Min ו @ מקס ביאורים:

מחלקה סטטית ציבורית שרת {/ ** * ה- IP של שרת מסד הנתונים * / מחרוזת IP פרטי; / ** * הנמל של שרת מסד הנתונים. * ערך ברירת המחדל הוא 443. * הערכים המותרים הם בטווח 400-4000. * / @Min (400) @Max (800) יציאת פרטי פרטית = 443; // סטרים וקובעים סטנדרטיים}

אם נבדוק את spring-configuration-metadata.json הקובץ כעת, נראה מידע נוסף זה משתקף:

{"groups": [{"name": "database", "type": "com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties", "sourceType": "com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties"}, {" שם ":" database.server "," type ":" com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties $ Server "," sourceType ":" com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties "," sourceMethod ":" getServer ( ) "}]," מאפיינים ": [{" name ":" database.password "," type ":" java.lang.String "," sourceType ":" com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties "}, {"name": "database.server.ip", "type": "java.lang.String", "description": "ה- IP של שרת מסד הנתונים", "sourceType": "com.baeldung.autoconfiguration.annotationprocessor .DatabaseProperties $ Server "}, {" name ":" database.server.port "," type ":" java.lang.Integer "," description ":" הנמל של שרת מסד הנתונים. ערך ברירת המחדל הוא 443. הערכים המותרים הם בטווח של 400-4000 "," s ourceType ":" com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties $ Server "," defaultValue ": 443}, {" name ":" database.username "," type ":" java.lang.String "," sourceType " : "com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties"}], "hints": []}

אנחנו יכולים לבדוק את ההבדלים עם database.server.ip ו database.server.port שדות. ואכן, המידע הנוסף מועיל למדי. כתוצאה מכך, הרבה יותר קל למפתחים ו- IDE להבין מה כל נכס עושה.

עלינו גם לוודא שאנחנו מפעילים את ה- build כדי לקבל את הקובץ המעודכן. בליקוי חמה, אם נבדוק את בנה אוטומטית אפשרות, כל פעולת שמירה תפעיל גירסה. ב- IntelliJ עלינו להפעיל את ה- build באופן ידני.

5.2. הבנת פורמט המטא נתונים

בואו נסתכל מקרוב על קובץ המטא נתונים של JSON ונדון במרכיביו.

קבוצות הם פריטים ברמה גבוהה יותר המשמשים לקיבוץ מאפיינים אחרים, מבלי לציין ערך עצמו. בדוגמה שלנו, יש לנו את מאגר מידע group, שהוא גם הקידומת של מאפייני התצורה. יש לנו גם שרת קבוצה, שיצרנו באמצעות מעמד פנימי וקבוצות ip ו נמל נכסים.

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

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

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

6. מסקנה

במאמר זה בדקנו את מעבד התצורה של Spring Boot ואת יכולתו ליצור מטא נתונים של תצורה. השימוש במטא נתונים זה מקל על אינטראקציה עם פרמטרי התצורה שלנו.

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

ראינו גם עד כמה התמיכה בהשלמה אוטומטית ב- IDE יכולה להיות מועילה.

כמו תמיד, כל קטעי הקוד המוזכרים במאמר זה נמצאים במאגר GitHub שלנו.


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