Vložte súbory a zoznamy zo súborov vlastností pružiny

1. Prehľad

V tomto rýchlom výučbe sa naučíme, ako vložiť hodnoty do poľa alebo Zoznam zo súboru vlastností Spring.

2. Predvolené správanie

Začneme jednoduchým application.properties spis:

arrayOfStrings = Baeldung, dot, com

Pozrime sa, ako sa chová jar, keď nastavíme typ našej premennej na Reťazec []:

@Value ("$ {arrayOfStrings}") private String [] arrayOfStrings;
@Test void whenContextIsInitialized_thenInjectedArrayContainsExectedValues ​​() {assertEquals (nový reťazec [] {"Baeldung", "dot", "com"}, arrayOfStrings); }

Vidíme, že Spring správne predpokladá, že náš oddeľovač je čiarka a podľa toho inicializuje pole.

Mali by sme tiež poznamenať, že štandardne injektovanie poľa funguje správne, iba ak máme hodnoty oddelené čiarkou.

3. Vkladanie zoznamov

Ak sa pokúsime vpichnúť a Zoznam rovnakým spôsobom dosiahneme prekvapivý výsledok:

@Value ("$ {arrayOfStrings}") súkromný zoznam neočakávanýListOfStrings;
@Test void whenContextIsInitialized_thenInjectedListContainsUnexpectedValues ​​() {assertEquals (Collections.singletonList ("Baeldung, dot, com"), unexpectedListOfStrings); }

Náš Zoznam obsahuje jeden prvok, ktorý sa rovná hodnote, ktorú sme nastavili v našom súbore vlastností.

Za účelom správneho podania a Zoznam, musíme použiť špeciálnu syntax nazvanú Spring Expression Language (SpEL):

@Value ("# {'$ {arrayOfStrings}'. Split (',')}") súkromný Zoznam listOfStrings;
@Test void whenContextIsInitialized_thenInjectedListContainsExectedValues ​​() {assertEquals (Arrays.asList ("Baeldung", "dot", "com"), listOfStrings); }

Vidíme, že náš výraz začína # namiesto $ na ktoré sme zvyknutí @Hodnota.

Mali by sme tiež poznamenať, že vyvolávame a rozdeliť metóda, vďaka ktorej je výraz o niečo zložitejší ako obvyklá injekcia.

Ak by sme chceli náš výraz trochu zjednodušiť, môžeme svoju vlastnosť deklarovať v špeciálnom formáte:

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

Jar tento formát rozpozná a my budeme môcť vložiť náš Zoznam pomocou trochu jednoduchšieho výrazu:

@Value ("# {$ {listOfStrings}}") súkromný Zoznam listOfStringsV2;
@Test void whenContextIsInitialized_thenInjectedListV2ContainsExectedValues ​​() {assertEquals (Arrays.asList ("Baeldung", "dot", "com"), listOfStringsV2); }

4. Používanie vlastných oddeľovačov

Vytvorme podobnú vlastnosť, ale tentokrát použijeme iný oddeľovač:

listOfStringsWithCustomDelimiter = Baeldung; dot; com

Ako sme videli pri injekcii Zoznamy, môžeme použiť špeciálny výraz, kde môžeme určiť požadovaný oddeľovač:

@Value ("# {'$ {listOfStringsWithCustomDelimiter}'. Split (';')}") súkromný Zoznam listOfStringsWithCustomDelimiter;
@Test void whenContextIsInitialized_thenInjectedListWithCustomDelimiterContainsExectedValues ​​() {assertEquals (Arrays.asList ("Baeldung", "dot", "com"), listOfStringsWithCustomDelimiter); }

5. Vstrekovanie iných typov

Pozrime sa na tieto vlastnosti:

listOfBooleans = false, false, true listOfIntegers = 1,2,3,4 listOfCharacters = a, b, c

Vidíme, že Spring podporuje základné typy ihneď po vybalení, takže nemusíme robiť žiadnu špeciálnu analýzu:

@Value ("# {'$ {listOfBooleans}'. Split (',')}") súkromný Zoznam listOfBooleans; @Value ("# {'$ {listOfIntegers}'. Split (',')}") súkromný Zoznam listOfIntegers; @Value ("# {'$ {listOfCharacter}'. Split (',')}") súkromný Zoznam listOfCharacter;
@Test void whenContextIsInitialized_thenInjectedListOfBasicTypesContainsExectedValues ​​() {assertEquals (Arrays.asList (false, false, true), listOfBooleans); assertEquals (Arrays.asList (1, 2, 3, 4), listOfIntegers); assertEquals (Arrays.asList ('a', 'b', 'c'), listOfCharacter); }

Toto je podporované iba prostredníctvom SpEL, takže nemôžeme injektovať pole rovnakým spôsobom.

6. Programové čítanie vlastností

Aby sme mohli programovo čítať vlastnosti, musíme najskôr získať inštanciu nášho Životné prostredie objekt:

@Autowired private Environment environment;

Potom môžeme jednoducho použiť getProperty metóda na čítanie ľubovoľnej vlastnosti zadaním jej kľúča a očakávaného typu:

@Test void whenReadingFromSpringEnvironment_thenPropertiesHaveExpectedValues ​​() {String [] arrayOfStrings = environment.getProperty ("arrayOfStrings", String []. Trieda); Zoznam listOfStrings = (Zoznam) environment.getProperty ("arrayOfStrings", List.class); assertEquals (nový reťazec [] {"Baeldung", "dot", "com"}, arrayOfStrings); assertEquals (Arrays.asList ("Baeldung", "dot", "com"), listOfStrings); }

7. Záver

V tomto rýchlom výučbe sme sa naučili, ako ľahko vložiť polia a Zoznams prostredníctvom rýchlych a praktických príkladov.

Ako vždy, kód je k dispozícii na GitHub.


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