Maison  >  Article  >  Java  >  Comment spécifier le fichier de configuration Yaml pour l'analyse SpringBoot

Comment spécifier le fichier de configuration Yaml pour l'analyse SpringBoot

WBOY
WBOYavant
2023-05-22 10:07:07962parcourir

1. Fichier de configuration personnalisé

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

2. Classe d'objet de configuration

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.

3. YamlPropertiesSourceFactory

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer