@PropertySource עם קבצי YAML באתחול האביב

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

במדריך מהיר זה, נראה כיצד לקרוא קובץ מאפיינים של YAML באמצעות ה- @PropertySource ביאור באביב המגף.

2. @PropertySource ו יאמל פוּרמָט

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

למרות זאת, כברירת מחדל, @PropertySource לא טוען קבצי YAML. עובדה זו מוזכרת במפורש בתיעוד הרשמי.

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

3. מותאם אישית PropertySourceFactory

החל באביב 4.3, @PropertySource מגיע עם בית חרושת תְכוּנָה. אנחנו יכולים לעשות בו שימוש ל לספק את היישום המותאם אישית שלנו של PropertySourceFactory, אשר יטפל בעיבוד הקבצים YAML.

זה קל יותר ממה שזה נשמע! בואו נראה כיצד לעשות זאת:

מחלקה ציבורית YamlPropertySourceFactory מיישמת PropertySourceFactory {@Override public PropertySource createPropertySource (שם מחרוזת, EncodedResource encodedResource) זורק IOException {YamlPropertiesFactoryBean מפעל = YamlPropertiesFactoryBean חדש (); factory.setResources (encodedResource.getResource ()); מאפייני מאפיינים = factory.getObject (); להחזיר PropertiesPropertySource חדשים (encodedResource.getResource (). getFilename (), מאפיינים); }}

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

ביישום המותאם אישית שלנו, ראשית, השתמשנו ב- YamlPropertiesFactoryBean להמיר את המשאבים בפורמט YAML ל- java.util. נכסים לְהִתְנַגֵד.

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

4. @PropertySource ו יאמל בִּפְעוּלָה

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

ראשית, בואו ניצור קובץ YAML פשוט - foo.yml:

yaml: שם: כינויים foo: - abc - xyz

לאחר מכן, בואו ליצור מחלקת מאפיינים עם @ConfigurationProperties והשתמש במנהג שלנו YamlPropertySourceFactory:

@Configuration @ConfigurationProperties (קידומת = "yaml") @PropertySource (value = "classpath: foo.yml", factory = YamlPropertySourceFactory.class) מחלקה ציבורית YamlFooProperties {שם מחרוזת פרטי; פרטי כינויים לרשימה; // גטר סטרים סטרים}

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

@RunWith (SpringRunner.class) @SpringBootTest מחלקה ציבורית YamlFooPropertiesIntegrationTest {@ YamlFooProperties פרטיות מאושרות yamlFooProperties; @Test הציבור בטל כאשר FactoryFrovidedThenYamlPropertiesInjected () {assertThat (yamlFooProperties.getName ()). IsEqualTo ("foo"); assertThat (yamlFooProperties.getAliases ()). containExactly ("abc", "xyz"); }}

5. מסקנה

לסיכום, במדריך מהיר זה הראינו לראשונה כמה קל ליצור מותאם אישית PropertySourceFactory . לאחר מכן, הצגנו כיצד להעביר יישום מותאם אישית זה ל- @PropertySource באמצעות שלה בית חרושת תְכוּנָה.

כתוצאה מכך, הצלחנו לטעון בהצלחה את קובץ המאפיינים YAML ליישום Spring Boot שלנו.

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


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