Útmutató a tavaszi rendszerindítási konfigurációs metaadatokhoz

1. Áttekintés

Spring Boot alkalmazás írásakor hasznos a konfigurációs tulajdonságok leképezése a Java babokra. Mi a legjobb módszer ezeknek a tulajdonságoknak a dokumentálásához?

Ebben az oktatóanyagban feltárjuk a tavaszi rendszerindító konfigurációs processzort és a hozzájuk tartozó JSON metaadatfájlokat, amelyek dokumentálják az egyes tulajdonságok jelentését, megszorításait és így tovább.

2. Konfigurációs metaadatok

A legtöbb fejlesztőként dolgozó alkalmazásnak bizonyos mértékben konfigurálhatónak kell lennie. Általában azonban nem igazán értjük, hogy mit csinál egy konfigurációs paraméter, ha van alapértelmezett értéke, ha elavult, és időnként nem is tudjuk, hogy a tulajdonság létezik.

A segítségünkre a Spring Boot konfigurációs metaadatokat generál egy JSON fájlba, amely hasznos információkat nyújt a tulajdonságok használatáról. Így, a konfigurációs metaadatok egy leíró fájl, amely tartalmazza a konfigurációs tulajdonságokkal való interakcióhoz szükséges információkat.

Az igazán szép dolog ebben a fájlban az Az IDE-k is olvashatják, amely a rugó tulajdonságainak automatikus kitöltését, valamint egyéb konfigurációs tanácsokat ad nekünk.

3. Függőségek

A konfigurációs metaadatok előállításához a spring-boot-configuration-processzor függőség.

Tehát menjünk előre, és adjuk hozzá a függőséget választható:

 org.springframework.boot spring-boot-configuration-processzor 2.1.6.RELEASE true 

Ez a függőség egy Java annotációs processzort biztosít számunkra, amelyet a projekt felépítése során hívunk meg. A későbbiekben erről részletesen beszélünk.

A legjobb gyakorlat, ha hozzáadunk egy függőséget választható Mavenben a megelőzés érdekében @ConfigurationProperties a projektünk által használt többi modulra való alkalmazástól.

4. Példa a konfigurációs tulajdonságokra

A processzor működésének megtekintéséhez képzeljük el, hogy van néhány tulajdonságunk, amelyet be kell építenünk a Spring Boot alkalmazásba egy Java-babon keresztül:

@Configuration @ConfigurationProperties (prefix = "database") public class DatabaseProperties {public static class Server {private String ip; privát int kikötő; // standard getters and setters} private String felhasználónév; privát karakterlánc jelszó; saját szerver szerver; // szabványos mérőeszközök és beállítók}

Ehhez a @ConfigurationProperties annotáció. A konfigurációs processzor osztályokat és módszereket keres ezzel a megjegyzéssel a konfigurációs paraméterek eléréséhez és a konfigurációs metaadatok előállításához.

Vegyünk fel néhány ilyen tulajdonságot egy tulajdonságfájlba. Ebben az esetben hívjuk adatbázis-tulajdonságok-teszt.tulajdonságok:

# Egyszerű tulajdonságok database.username = baeldung database.password = jelszó

És csak azért, hogy biztos legyünk benne, hozzáadunk egy tesztet is, hogy megbizonyosodjunk arról, hogy mindannyian fel vannak sorolva:

@RunWith (SpringRunner.class) @SpringBootTest (class = AnnotationProcessorApplication.class) @TestPropertySource ("classpath: databaseaseproperties-test.properties") public class DatabasePropertiesIntegrationTest {@Autowired private DatabaseProper; @Test public void whenSimplePropertyQueriedThenReturnsPropertyValue () dobja az {Assert.assertEquals ("Helytelenül kötött felhasználónév tulajdonság", "baeldung", databaseProperties.getUsername ()) kivételt; Assert.assertEquals ("Helytelenül kötött jelszó tulajdonság", "jelszó", databaseProperties.getPassword ()); }}

Hozzáadtuk a beágyazott tulajdonságokat is database.server.id és database.server.port a belső osztályon keresztül szerver. Hozzá kellene adnunk a belső osztályt szerver valamint egy mező szerver saját getterével és szetterével.

Tesztünk során végezzünk egy gyors ellenőrzést, hogy megbizonyosodjunk arról, hogy be tudjuk-e állítani és beolvashatjuk a sikeresen beágyazott tulajdonságokat is:

@Test public void whenNestedPropertyQueriedThenReturnsPropertyValue () dobja az {Assert.assertEquals ("Helytelenül kötött kiszolgáló IP beágyazott tulajdonság", "127.0.0.1", databaseProperties.getServer (). GetIp ()) kivételt Assert.assertEquals ("Helytelenül kötött kiszolgálóport beágyazott tulajdonság", 3306, databaseProperties.getServer (). GetPort ()); }

Oké, most már készen állunk a processzor használatára.

5. Konfigurációs metaadatok generálása

Korábban említettük, hogy a konfigurációs processzor létrehoz egy fájlt - ez annotációs feldolgozást használ.

Tehát a projektünk összeállítása után meglátjuk a nevű fájl spring-configuration-metadata.json belül cél / osztályok / META-INF:

{"csoportok": [{"név": "adatbázis", "típus": "com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties", "sourceType": "com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties"}, {" név ":" database.server "," type ":" com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties $ Server "," sourceType ":" com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties "," sourceMethod ":" getServ " ) "}]," tulajdonságok ": [{" név ":" adatbázis.jelszó "," típus ":" java.lang.String "," sourceType ":" com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties "}, {"név": "database.server.ip", "type": "java.lang.String", "sourceType": "com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties $ Server"}, {"név": " database.server.port "," type ":" java.lang.Integer "," sourceType ":" com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties $ Server "," defaultValue ": 0}, {" name ":" database.username "," type ":" java.lang.String " , "sourceType": "com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties"}], "tippek": []}

Ezután nézzük meg, hogy a Java-babunkon lévő kommentárok megváltoztatása hogyan befolyásolja a metaadatokat.

5.1. További információk a konfigurációs metaadatokról

Először adjunk hozzá JavaDoc megjegyzéseket szerver.

Másodszor adjunk meg egy alapértelmezett értéket a database.server.port mezőt, és végül adja hozzá a @Min és @Max kommentárok:

public static class Server {/ ** * Az adatbázis-kiszolgáló IP-je * / private String ip; / ** * Az adatbázis-kiszolgáló portja. * Az alapértelmezett érték 443. * A megengedett értékek a 400–4000 tartományba esnek. * / @Min (400) @Max (800) privát int port = 443; // szabványos mérőeszközök és beállítók}

Ha ellenőrizzük a spring-configuration-metadata.json fájlban, akkor látni fogjuk ezt az extra információt:

{"csoportok": [{"név": "adatbázis", "típus": "com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties", "sourceType": "com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties"}, {" név ":" database.server "," type ":" com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties $ Server "," sourceType ":" com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties "," sourceMethod ":" getServ " ) "}]," tulajdonságok ": [{" név ":" adatbázis.jelszó "," típus ":" java.lang.String "," sourceType ":" com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties "}, {"név": "database.server.ip", "type": "java.lang.String", "description": "Az adatbázis-kiszolgáló IP-je", "sourceType": "com.baeldung.autoconfiguration.annotationprocessor .DatabaseProperties $ Server "}, {" name ":" database.server.port "," type ":" java.lang.Integer "," description ":" Az adatbázis-kiszolgáló portja. Az alapértelmezett érték 443. A megengedett értékek a 400-4000 "," s tartományban vannak ourceType ":" com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties $ Server "," defaultValue ": 443}, {" name ":" database.username "," type ":" java.lang.String "," sourceType " : "com.baeldung.autoconfiguration.annotationprocessor.DatabaseProperties"}], "tippek": []}

Ellenőrizhetjük a különbségeket a database.server.ip és database.server.port mezők. Valóban, az extra információk nagyon hasznosak. Ennek eredményeként a fejlesztők és az IDE-k sokkal könnyebben megértik, hogy az egyes tulajdon mit csinál.

Arról is gondoskodnunk kell, hogy elindítsuk az összeállítást a frissített fájl megszerzéséhez. Az Eclipse-ben, ha ellenőrizzük a Automatikus építés opció esetén minden mentési művelet kiváltást indít. Az IntelliJ alkalmazásban manuálisan kell elindítanunk a felépítést.

5.2. A metaadatok formátumának megértése

Nézzük meg közelebbről a JSON metaadatfájlt, és vitassuk meg annak összetevőit.

Csoportok magasabb szintű elemek, amelyeket más tulajdonságok csoportosításához használnak, anélkül, hogy magát az értéket megadnák. Példánkban a adatbázis csoport, amely egyben a konfigurációs tulajdonságok előtagja is. Nekünk is van egy szerver csoportot, amelyet egy belső osztályon és csoportokon keresztül hoztunk létre ip és kikötő tulajdonságait.

Tulajdonságok olyan konfigurációs elemek, amelyeknek megadhatunk egy értéket. Ezek a tulajdonságok be vannak állítva .tulajdonságok vagy .yml fájlokat, és további információkkal rendelkezhetnek, például az alapértelmezett értékekről és az érvényesítésekről, amint azt a fenti példában láttuk.

Tippek további információk, amelyek segítenek a felhasználónak a tulajdonság értékének beállításában. Például, ha van egy megengedett értéke egy tulajdonságnak, akkor leírást adhatunk arról, hogy mindegyikük mit csinál. Az IDE auto-verseny segítséget nyújt ezekhez a tippekhez.

A konfigurációs metaadatok minden összetevőjének meg vannak a saját attribútumai, amelyek részletesebben elmagyarázzák a konfigurációs tulajdonságokat.

6. Következtetés

Ebben a cikkben megvizsgáltuk a tavaszi rendszerindító konfigurációs processzort és annak képességét a konfigurációs metaadatok létrehozására. Ezen metaadatok használata sokkal könnyebbé teszi a konfigurációs paramétereinkkel való interakciót.

Hoztunk egy példát egy generált konfigurációs metaadatokra, és részletesen elmagyaráztuk azok formátumát és összetevőit.

Azt is láttuk, mennyire hasznos lehet az IDE-nk automatikus kiegészítésének támogatása.

Mint mindig, a cikkben említett összes kódrészlet megtalálható a GitHub-adattárunkban.