הזריק מערכים ורשימות מקבצי מאפייני האביב

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

במדריך מהיר זה נלמד כיצד להזרים ערכים למערך או רשימה מקובץ מאפייני אביב.

2. התנהגות ברירת מחדל

נתחיל בפשטות application.properties קוֹבֶץ:

arrayOfStrings = Baeldung, dot, com

בואו נראה איך אביב מתנהג כאשר אנו מגדירים את סוג המשתנה שלנו חוּט[]:

@Value ("$ {arrayOfStrings}") מחרוזת פרטית [] arrayOfStrings;
@Test בטל כאשרContextIsInitialized_thenInjectedArrayContainsExpectedValues ​​() {assertEquals (מחרוזת חדשה [] {"Baeldung", "נקודה", "com"}, arrayOfStrings); }

אנו יכולים לראות ש- Spring מניח נכון את המפריד שלנו הוא פסיק ומאתחל את המערך בהתאם.

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

3. הזרקת רשימות

אם ננסה להזריק א רשימה באותו אופן, נקבל תוצאה מפתיעה:

@Value ("$ {arrayOfStrings}") רשימה פרטית unpratectistListOfStrings;
@Test בטל כאשרContextIsInitialized_thenInjectedListContainsUnexpectedValues ​​() {assertEquals (Collections.singletonList ("Baeldung, dot, com"), ציפוי ListOfStrings); }

שֶׁלָנוּ רשימה מכיל אלמנט יחיד, השווה לערך שקבענו בקובץ המאפיינים שלנו.

על מנת להזריק כראוי א רשימה, עלינו להשתמש בתחביר מיוחד שנקרא שפת ביטוי האביב (SpEL):

@Value ("# {'$ {arrayOfStrings}'. Split (',')}") רשימה פרטית listOfStrings;
@Test בטל כאשרContextIsInitialized_thenInjectedListContainsExpectedValues ​​() {assertEquals (Arrays.asList ("Baeldung", "dot", "com"), listOfStrings); }

אנו יכולים לראות שהביטוי שלנו מתחיל ב # במקום ה $ שאנחנו רגילים אליהם @ערך.

עלינו לציין גם כי אנו קוראים א לְפַצֵל שיטה, שהופכת את הביטוי למורכב מעט יותר מהזרקה רגילה.

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

listOfStrings = {'Baeldung', 'dot', 'com'}

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

@Value ("# {$ {listOfStrings}}") רשימה רשימת listOfStringsV2;
@Test בטל כאשרContextIsInitialized_thenInjectedListV2ContainsExpectedValues ​​() {assertEquals (Arrays.asList ("Baeldung", "dot", "com"), listOfStringsV2); }

4. שימוש במפרידים מותאמים אישית

בואו ניצור מאפיין דומה, אך הפעם נשתמש במתחם אחר:

listOfStringsWithCustomDelimiter = Baeldung; dot; com

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

@Value ("# {'$ {listOfStringsWithCustomDelimiter}'. Split (';')}") רשימת רשימה פרטיתOfStringsWithCustomDelimiter;
@Test בטל כאשרContextIsInitialized_thenInjectedListWithCustomDelimiterContainsExpectedValues ​​() {assertEquals (Arrays.asList ("Baeldung", "dot", "com"), listOfStringsWithCustomDelimiter); }

5. הזרקת סוגים אחרים

בואו נסתכל על המאפיינים הבאים:

listOfBooleans = false, false, נכון listOfIntegers = 1,2,3,4 listOfCharacters = a, b, c

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

@Value ("# {'$ {listOfBooleans}'. פיצול (',')}") רשימה פרטית listOfBooleans; @Value ("# {'$ {listOfIntegers}'. Split (',')}") רשימה רשימת listOfIntegers פרטית; @Value ("# {'$ {listOfCharacters}'. Split (',')}") רשימת רשימה listOfCharacters פרטית;
@Test בטל כאשרContextIsInitialized_thenInjectedListOfBasicTypesContainsExpectedValues ​​() {assertEquals (Arrays.asList (false, false, true), listOfBooleans); assertEquals (Arrays.asList (1, 2, 3, 4), listOfIntegers); assertEquals (Arrays.asList ('a', 'b', 'c'), listOfCharacters); }

זה נתמך רק באמצעות SpEL, ולכן איננו יכולים להזרים מערך באותו אופן.

6. מאפייני קריאה באופן תכנותי

על מנת לקרוא מאפיינים באופן פרוגרמטי, ראשית עלינו לקבל את המופע שלנו סביבה לְהִתְנַגֵד:

@ סביבת סביבה פרטית אוטומטית;

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

@Test בטל whenReadingFromSpringEnvironment_thenPropertiesHaveExpectedValues ​​() {String [] arrayOfStrings = environment.getProperty ("arrayOfStrings", String []. Class); List listOfStrings = (List) environment.getProperty ("arrayOfStrings", List.class); assertEquals (מחרוזת חדשה [] {"Baeldung", "נקודה", "com"}, arrayOfStrings); assertEquals (Arrays.asList ("Baeldung", "dot", "com"), listOfStrings); }

7. מסקנה

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

כמו תמיד, הקוד זמין ב- GitHub.


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