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
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.