Configuration avec des fichiers YAML

JavaBeginner
Pratiquer maintenant

Introduction

Dans ce projet, vous allez apprendre à configurer une application Spring Boot à l'aide d'un fichier YAML, à implémenter une classe pour gérer les données de configuration et à créer un contrôleur pour afficher les informations configurées sur une page web.

👀 Aperçu

Résultat de la page web Spring Boot

🎯 Tâches

Dans ce projet, vous allez apprendre :

  • Comment configurer les propriétés de l'application à l'aide d'un fichier YAML
  • Comment implémenter une classe Student pour gérer les données de configuration
  • Comment créer un StudentController pour afficher les données configurées sur une page web
  • Comment modifier la classe de démarrage pour scanner toutes les classes du package du projet

🏆 Réalisations

Après avoir terminé ce projet, vous serez capable de :

  • Utiliser des fichiers YAML pour la configuration de l'application
  • Utiliser l'annotation @ConfigurationProperties pour lier automatiquement les données de configuration à une classe
  • Utiliser l'annotation @Value pour injecter des valeurs de configuration dans un contrôleur
  • Utiliser l'annotation @SpringBootApplication pour configurer le balayage des composants
  • Développer une application web simple qui affiche les données configurées

Configurez le fichier YAML

Dans cette étape, vous allez apprendre à configurer les propriétés de l'application à l'aide d'un fichier YAML. Suivez les étapes ci-dessous pour terminer cette étape :

  1. Accédez au répertoire src/main/resources de votre projet.
  2. Créez un nouveau fichier nommé application.yml.
  3. Dans le fichier application.yml, ajoutez la configuration suivante :
## Propriétés définies par l'utilisateur
school: Stanford University

student:
  id: 2024000103
  name: Taylor Joy
  age: 18
  courseId: 100018, 321001, 458911

Cette configuration YAML définit la propriété school et les propriétés student, y compris l'identifiant de l'étudiant, le nom, l'âge et les identifiants de cours.

✨ Vérifier la solution et pratiquer

Implémentez la classe Student

Dans cette étape, vous allez implémenter la classe Student pour gérer les données de configuration.

  1. Accédez au package org.labex.entity et créez un nouveau fichier nommé Student.java.
  2. Dans le fichier Student.java, ajoutez le code suivant :
package org.labex.entity;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.Arrays;

@Component
@ConfigurationProperties(prefix = "student")
public class Student {
    private String id;
    private String name;
    private int age;
    private int[] courseId;

    @Override
    public String toString() {
        return "Student {id=" + id +
                ", name=" + name +
                ", age=" + age +
                ", course id=" + Arrays.toString(courseId) + "}";
    }

    // Getters et setters
    //...
}

Dans cette classe, nous utilisons les annotations @Component et @ConfigurationProperties pour lier automatiquement les propriétés du fichier application.yml aux champs correspondants de la classe Student.

✨ Vérifier la solution et pratiquer

Implémentez le StudentController

Dans cette étape, vous allez implémenter le StudentController pour afficher les données configurées.

  1. Accédez au package org.labex.controller et créez un nouveau fichier nommé StudentController.java.
  2. Dans le fichier StudentController.java, ajoutez le code suivant :
package org.labex.controller;

import org.labex.entity.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class StudentController {
    @Value("${school}")
    private String school;

    @Autowired
    private Student student;

    @GetMapping("/student")
    public String getStudent() {
        return "school=" + school + student.toString();
    }
}

Dans ce contrôleur, nous utilisons l'annotation @Value pour injecter la propriété school, et l'annotation @Autowired pour injecter l'objet Student. La méthode getStudent() affichera les données configurées dans le navigateur lorsqu'elle est accédée via l'endpoint /student.

✨ Vérifier la solution et pratiquer

Modifiez la classe de démarrage

Dans cette étape, vous allez modifier la classe de démarrage pour scanner toutes les classes du package org.labex.

  1. Accédez au package org.labex.springbootyaml et ouvrez le fichier DemoApplication.java.
  2. Mettez à jour la classe DemoApplication comme suit :
package org.labex.springbootyaml;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication(scanBasePackages="org.labex")
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

En ajoutant scanBasePackages="org.labex" à l'annotation @SpringBootApplication, nous nous assurons que toutes les classes du package org.labex sont scannées et gérées par le contexte Spring.

✨ Vérifier la solution et pratiquer

Emballer et exécuter l'application

Dans cette étape finale, vous allez emballer l'application dans un fichier JAR et exécuter le service Spring Boot.

  1. Ouvrez un terminal et accédez au répertoire racine de votre projet en utilisant la commande suivante :
cd ~/project/springbootyaml/
  1. Exécutez les commandes suivantes pour emballer et démarrer le service Spring Boot :
mvn clean package
mvn spring-boot:run
  1. Une fois le service en cours d'exécution, ouvrez un navigateur web et accédez à http://localhost:8080/student. Vous devriez voir les informations sur l'école et l'étudiant configurées affichées sur la page.

La sortie devrait ressembler à ceci :

Sortie du service Spring Boot

Félicitations! Vous avez réussi à terminer le projet en configurant l'application à l'aide d'un fichier YAML, en implémentant les classes nécessaires et en exécutant le service Spring Boot.

✨ Vérifier la solution et pratiquer

Résumé

Félicitations! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires sur LabEx pour améliorer vos compétences.