YAML az objektumok listájához a tavaszi indításkor

1. Áttekintés

Ebben a rövid bemutatóban közelebbről megnézzük hogyan lehet egy YAML listát leképezni a Lista tavaszi csizmában.

Először a YAML-ben definiálhatunk néhány listát. Ezután mélyebbre ásunk, hogy megtudjuk hogyan köthetjük a YAML listákat Listas tárgyak.

2. Gyors összefoglalás a listákról a YAML-ben

Röviden: a YAML egy ember által olvasható adatsorosítási szabvány, amely tömör és világos módszert kínál a konfigurációs fájlok írására. A YAML-ben az a jó, hogy több adattípust támogat, mint pl Listas, Térképs és skaláris típusok.

A YAML-lista elemeit a „-” karakterrel definiáljuk, és mindegyikük ugyanazon a behúzási szinten osztozik:

yamlconfig: list: - item1 - item2 - item3 - item4

Összehasonlításképpen, a tulajdonságokon alapuló egyenérték indexeket használ:

yamlconfig.list [0] = item1 yamlconfig.list [1] = item2 yamlconfig.list [2] = item3 yamlconfig.list [3] = item4

További példákért olvassa el cikkünket arról, hogyan definiálhatunk listákat és térképeket a YAML és tulajdonságfájlok segítségével.

Ami azt illeti, a A YAML jelentősen javítja az olvashatóságot a tulajdonságfájlokhoz képest. A YAML másik érdekes tulajdonsága, hogy különböző tulajdonságokat határozhat meg a különböző rugóprofilokhoz.

Érdemes megemlíteni, hogy a Spring Boot out-of-box támogatást nyújt a YAML konfigurációhoz. Tervezés szerint a Spring Boot a konfigurációs tulajdonságokat tölti be alkalmazás.yml indításkor különösebb munka nélkül.

3. A YAML-lista egyszerűhöz kötése Lista objektumok

A Spring Boot biztosítja a @ConfigurationProperties annotáció a egyszerűsítse a külső konfigurációs adatok objektummodellbe történő leképezésének logikáját.

Ebben a szakaszban a következőket fogjuk használni @ConfigurationProperties hogy a YAML listát a Lista.

Kezdjük egy egyszerű lista meghatározásával a alkalmazás.yml:

alkalmazás: profilok: - dev - teszt - prod - 1 - 2

Ezután létrehozunk egy egyszerűt ApplicationProps POJO, hogy tartsa a logikát, hogy a YAML listánkat a Lista nak,-nektárgyak:

@Component @ConfigurationProperties (prefix = "alkalmazás") public class ApplicationProps {private List profilok; // getter és setter}

A ApplicationProps osztályt fel kell díszíteni @ConfigurationProperties kifejezni szándékát, hogy a YAML összes tulajdonságát feltárja egy objektumhoz a megadott előtaggal ApplicationProps.

Megkötni a profilok csak meg kell határoznunk egy típusú mezőt Lista és a @ConfigurationProperties az annotáció gondoskodik a többiről.

Figyeljük meg, hogy regisztráltuk a ApplicationProps osztály, mint normál tavaszi bab felhasználásával @Összetevő. Ennek eredményeként ugyanúgy befecskendezhetjük más osztályokba, mint bármely más tavaszi babot.

Végül beadjuk a ApplicationProps babot egy tesztosztályba, és ellenőrizze, hogy a mi profilok A YAML listát helyesen adta be a-ként Lista:

@ExtendWith (SpringExtension.class) @ContextConfiguration (inicializátorok = ConfigFileApplicationContextInitializer.class) @EnableConfigurationProperties (value = ApplicationProps.class) osztály YamlSimpleListUnitTest {@Autowired private ApplicationProps applicationProps; @Test public void whenYamlList_thenLoadSimpleList () {assertThat (applicationProps.getProfiles (). Get (0)). IsEqualTo ("dev"); assertThat (applicationProps.getProfiles (). get (4) .getClass ()). isEqualTo (Integer.class); assertThat (applicationProps.getProfiles (). size ()). isEqualTo (5); }}

4. A YAML-listák összekapcsolása a komplex listákkal

Merüljünk el mélyebben, és nézzük meg, hogyan lehet a beágyazott YAML-listákat bonyolult struktúrába injektálni Listas.

Először adjunk hozzá néhány beágyazott listát alkalmazás.yml:

alkalmazás: // ... kellékek: - név: YamlList url: //yamllist.dev leírás: A Yaml listájának hozzárendelése a Spring Boot objektumainak listájához - ip: 10.10.10.10 port: 8091 - e-mail: [email protected] kapcsolat : //yamllist.dev/contact users: - felhasználónév: admin jelszó: [e-mail védett] @ szerepkörök: - READ - WRITE - VIEW - DELETE - felhasználónév: guest jelszó: [email protected] szerepkörök: - VIEW

Ebben a példában a kellékek ingatlan a Lista. Hasonlóképpen feltérképezzük felhasználók ba be Lista nak,-nek Felhasználó tárgyakat.

Mivel a kellékek a bejegyzés különböző kulcsokat tartalmaz, akkor a-ként beadhatjuk Lista nak,-nek Térképs. Ügyeljen arra, hogy olvassa el cikkünket arról, hogy miként lehet térképet injektálni egy YAML fájlból a Spring Boot alkalmazásban.

azonban, abban az esetben felhasználók, az összes elem ugyanazokkal a kulcsokkal rendelkezik, így a feltérképezés egyszerűsítése érdekében szükség lehet egy dedikált létrehozására Felhasználó osztály, hogy a kulcsokat mezőkbe foglalja:

public class ApplicationProps {// ... privát lista kellékek; privát lista felhasználók; // getterek és beállítók public static class Felhasználó {private String felhasználónév; privát karakterlánc jelszó; privát lista szerepek; // szerelők és beállítók}}

Most ellenőrizzük, hogy a beágyazott YAML-listáink megfelelően vannak-e feltérképezve:

@ExtendWith (SpringExtension.class) @ContextConfiguration (inicializátorok = ConfigFileApplicationContextInitializer.class) @EnableConfigurationProperties (value = ApplicationProps.class) osztály YamlComplexListsUnitTest {@Autowired private ApplicationProps applicationProps; @Test public void whenYamlNestedLists_thenLoadComplexLists () {assertThat (applicationProps.getUsers (). Get (0) .getPassword ()). IsEqualTo ("[email protected] @"); assertThat (applicationProps.getProps (). get (0) .get ("név")). isEqualTo ("YamlList"); assertThat (applicationProps.getProps (). get (1) .get ("port"). getClass ()). isEqualTo (Integer.class); }}

5. Következtetés

Ebben az oktatóanyagban megtanultuk, hogyan kell leképezni a YAML-listákat a Java-ra Listas. Ellenőriztük azt is, hogyan lehet összetett listákat kötni az egyedi POJO-khoz.

Mint mindig, a cikk teljes forráskódja elérhető a GitHubon.