@PropertySource YAML fájlokkal a tavaszi indításkor

1. Áttekintés

Ebben a gyors bemutatóban megmutatjuk, hogyan olvasható el egy YAML tulajdonságfájl a @PropertySource annotáció a Spring Boot-ban.

2. @PropertySource és YAML Formátum

A Spring Boot nagy támogatást nyújt a külső konfigurációhoz. Ezenkívül különböző módszerekkel és formátumokkal is el lehet olvasni a Spring Boot alkalmazás tulajdonságait.

Azonban, alapértelmezés szerint, @PropertySource nem tölti be a YAML fájlokat. Ezt a tényt kifejezetten megemlíti a hivatalos dokumentáció.

Tehát, ha használni akarjuk a @PropertySource Jelölés az alkalmazásunkban, ragaszkodnunk kell a szabványhoz tulajdonságait fájlokat. Vagy mi magunk is megvalósíthatjuk a hiányzó puzzle-darabot!

3. Egyedi PropertySourceFactory

4.3 tavasztól @PropertySource jön a gyár tulajdonság. Használhatjuk biztosítja a PropertySourceFactory, amely a YAML fájlfeldolgozást kezeli.

Ez könnyebb, mint amilyennek hangzik! Nézzük meg, hogyan kell ezt megtenni:

public class YamlPropertySourceFactory implementates PropertySourceFactory {@Orride public PropertySource createPropertySource (String name, EncodedResource encodedResource) dobja az IOException {YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean (); factory.setResources (encodedResource.getResource ()); Tulajdonságok tulajdonságok = gyár.getObject (); return new PropertiesPropertySource (encodedResource.getResource (). getFilename (), tulajdonságok); }}

Mint láthatjuk, elegendő egyetlenegyet megvalósítani createPropertySource módszer.

Egyedi megvalósításunkban először használtuk a YamlPropertiesFactoryBean hogy az erőforrásokat YAML formátumban konvertálja a java.util.Tulajdonságok tárgy.

Ezután egyszerűen visszaküldtük a PropertiesPropertySource , amely egy burkoló, amely lehetővé teszi Spring számára az elemzett tulajdonságok beolvasását.

4. @PropertySource és YAML akcióban

Tegyük most össze az összes darabot, és nézzük meg, hogyan lehet őket a gyakorlatban használni.

Először hozzunk létre egy egyszerű YAML fájlt - foo.yml:

yaml: név: foo álnevek: - abc - xyz

Ezután hozzunk létre egy tulajdonságosztályt a @ConfigurationProperties és használja a szokásunkat YamlPropertySourceFactory:

@Configuration @ConfigurationProperties (prefix = "yaml") @PropertySource (value = "classpath: foo.yml", factory = YamlPropertySourceFactory.class) public class YamlFooProperties {private String name; privát List álnevek; // standard getter és beállítók}

És végül, ellenőrizzük, hogy a tulajdonságok megfelelően vannak-e beadva:

@RunWith (SpringRunner.class) @SpringBootTest nyilvános osztály YamlFooPropertiesIntegrationTest {@Autowired privát YamlFooProperties yamlFooProperties; @Test public void whenFactoryProvidedThenYamlPropertiesInjected () {assertThat (yamlFooProperties.getName ()). IsEqualTo ("foo"); assertThat (yamlFooProperties.getAliases ()). tartalmazzaExactly ("abc", "xyz"); }}

5. Következtetés

Összefoglalva, ebben a gyors bemutatóban először megmutattuk, milyen egyszerű létrehozni egy egyéni PropertySourceFactory . Ezt követően bemutattuk, hogyan lehet ezt az egyéni megvalósítást átadni a @PropertySource annak használatával gyár tulajdonság.

Következésképpen, sikeresen be tudtuk tölteni a YAML tulajdonságok fájlt a Spring Boot alkalmazásba.

Szokás szerint az összes kódpélda elérhető a GitHubon.


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