שימוש ב- application.yml לעומת application.properties ב- Spring Boot

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

נוהג נפוץ באביב אתחול הוא שימוש בתצורה חיצונית להגדרת המאפיינים שלנו. זה מאפשר לנו להשתמש באותו קוד יישום בסביבות שונות.

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

במדריך קצר זה נחקור את ההבדלים העיקריים בין מאפיינים לקבצי YAML.

2. תצורת מאפיינים

כברירת מחדל, Spring Boot יכול לגשת לתצורות שנקבעו ב- application.properties קובץ, המשתמש בתבנית ערך מפתח:

spring.datasource.url = jdbc: h2: dev spring.datasource.username = SA spring.datasource.password = סיסמה

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

2.1. מצייני מיקום בנכסים

במסגרת הערכים שלנו, אנו יכולים להשתמש במקומות מיקום עם ה- ${} תחביר להתייחס לתוכן של מפתחות אחרים, מאפייני מערכת או משתני סביבה.

app.name = MyApp app.description = $ {app.name} הוא יישום Boot Boot

2.2. מבנה הרשימה

אם יש לנו אותו סוג של מאפיינים עם ערכים שונים, נוכל לייצג את מבנה הרשימה עם מדדי מערך:

application.servers [0] .ip = 127.0.0.1 application.servers [0]. path = / path1 application.servers [1] .ip = 127.0.0.2 application.servers [1] .path = / path2 application.servers [ 2] .ip = 127.0.0.3 שרתים של יישומים [2]. נתיב = / path3

3. תצורת YAML

3.1. פורמט YAML

כמו גם קבצי מאפייני Java, אנו יכולים גם להשתמש בקובצי תצורה מבוססי YAML ביישום Spring Boot שלנו. YAML הוא פורמט נוח לציון נתוני תצורה היררכיים.

בואו ניקח את אותה דוגמא מקובץ המאפיינים שלנו ונמיר אותה ל- YAML:

קפיץ: מקור נתונים: סיסמה: סיסמה url: jdbc: h2: שם משתמש dev: SA

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

3.2. מבנה הרשימה

ל- YAML יש פורמט תמציתי יותר לביטוי רשימות:

יישום: שרתים: - ip: '127.0.0.1' נתיב: '/ path1' - ip: '127.0.0.2' path: '/ path2' - ip: '127.0.0.3' path: '/ path3'

3.3. פרופילים מרובים

בונוס של השימוש ב- YAML הוא שהוא יכול לאחסן מספר פרופילים באותו קובץ. וב- YAML, שלוש מקפים מציינות את תחילתו של מסמך חדש. אז ניתן לתאר את כל הפרופילים באותו קובץ:

קובץ רישום: שם: myapplication.log קפיץ: פרופילים: הזמנת מקור מידע: סיסמה: '' url: jdbc: h2: הזמנת שם משתמש: SA --- קפיץ: פרופילים: שילוב נתונים מקור: סיסמה: 'סיסמה' url: jdbc: mysql: // localhost: 3306 / שם משתמש db_integration: משתמש

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

3.4. פרופילים על פני מספר קבצים

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

אנו משיגים זאת על ידי הצבת שם הפרופיל בשם הקובץ - למשל, application-dev.yml אוֹ יישומים-dev.properties.

4. שימוש במגף האביב

כעת, לאחר שהגדרנו את התצורות שלנו, בואו נראה כיצד לגשת אליהן.

4.1. ערך ביאור

אנו יכולים להזרים את ערכי המאפיינים שלנו באמצעות @ערך ביאור:

@Value ("$ {key.something}") מחרוזת פרטית injectedProperty;

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

4.2. סביבה הַפשָׁטָה

אנו יכולים גם להשיג את שווי הנכס באמצעות ה- סביבה ממשק API:

@ סביבה פרטית אוטומטית מאושרת; מחרוזת ציבורית getSomeKey () {return env.getProperty ("key.something"); } 

4.3. ConfigurationProperties ביאור

לבסוף, אנו יכולים גם להשתמש ב- @ConfigurationProperties ביאור כדי לאגד את המאפיינים שלנו לאובייקטים מובנים בטוחים לסוג:

@ConfigurationProperties (קידומת = "דואר") מחלקה ציבורית ConfigProperties {שם מחרוזת; תיאור מחרוזת; ...

5. מסקנה

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

כמו תמיד, כל דוגמאות הקוד זמינות ב- GitHub.