Maison >Java >javaDidacticiel >Comment spécifier le fichier de configuration Yaml pour l'analyse SpringBoot
Créez le fichier my.yaml sous ressources. "-" est utilisé pour indiquer le type de tableau Assurez-vous de faire attention aux espaces.
my: contents: - id: 12121 name: nadasd - id: 3333 name: vfffff
Créez un objet de classe de configuration et ajoutez les annotations @Component, @PropertySource et @ConfigurationProperties à la classe.
@Component consiste à confier la classe à Spring Management, @PropertySource est utilisé pour spécifier le fichier de configuration et analyser le format Yaml, et @ConfigurationProperties consiste à injecter automatiquement les propriétés du fichier de configuration analysées dans les propriétés de la classe.
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; @Component @PropertySource(value = "classpath:my.yaml", factory = YamlPropertiesSourceFactory.class) @ConfigurationProperties(prefix = "my") public class MyProperties { private List<content> contents = new ArrayList<>(); public List<content> getContents() { return contents; } public void setContents(List<content> contents) { this.contents = contents; } } class content { private String id; private String name; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
@PropertySource l'annotation est utilisée par Spring pour charger les fichiers de configuration. Les attributs @PropertySource sont les suivants :
name : vide par défaut, généré automatiquement par Spring s'il n'est pas spécifié
value : fichier de configuration
ignoreResourceNotFound : introuvable S'il faut ignorer le fichier de configuration, la valeur par défaut est false, ajoutée dans la version 4.0
encoding : format d'encodage du fichier de configuration, l'UTF-8 par défaut a été ajouté dans la version 4.3
factory : Configuration usine d'analyse de fichiers, par défaut : PropertySourceFactory.class a été ajouté dans la version 4.3, s'il s'agit d'une version précédente, vous devez injecter manuellement le fichier de configuration analysant les beans
Spring Boot ne prend pas en charge @PropertySource pour lire les fichiers yaml par défaut, et vous devez personnaliser PropertySourceFactory pour l'analyse.
Créez la classe YamlPropertiesSourceFactory pour analyser les fichiers au format Yaml.
import org.springframework.boot.env.YamlPropertySourceLoader; import org.springframework.core.env.PropertySource; import org.springframework.core.io.support.EncodedResource; import org.springframework.core.io.support.PropertySourceFactory; import java.io.IOException; import java.util.List; import java.util.Optional; public class YamlPropertiesSourceFactory implements PropertySourceFactory { @Override public PropertySource<?> createPropertySource(String name, EncodedResource resource) throws IOException { String resourceName = Optional.ofNullable(name).orElse(resource.getResource().getFilename()); List<PropertySource<?>> yamlSources = new YamlPropertySourceLoader().load(resourceName, resource.getResource()); return yamlSources.get(0); } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!