Configuración con archivos YAML

JavaBeginner
Practicar Ahora

Introducción

En este proyecto, aprenderá a configurar una aplicación Spring Boot utilizando un archivo YAML, implementar una clase para manejar los datos de configuración y crear un controlador para mostrar la información configurada en una página web.

👀 Vista previa

Resultado de la página web de Spring Boot

🎯 Tareas

En este proyecto, aprenderá:

  • Cómo configurar las propiedades de la aplicación utilizando un archivo YAML
  • Cómo implementar una clase Student para manejar los datos de configuración
  • Cómo crear un StudentController para mostrar los datos configurados en una página web
  • Cómo modificar la clase de arranque para escanear todas las clases en el paquete del proyecto

🏆 Logros

Después de completar este proyecto, podrá:

  • Utilizar archivos YAML para la configuración de la aplicación
  • Utilizar la anotación @ConfigurationProperties para enlazar automáticamente los datos de configuración a una clase
  • Utilizar la anotación @Value para inyectar valores de configuración en un controlador
  • Utilizar la anotación @SpringBootApplication para configurar la búsqueda de componentes
  • Desarrollar una aplicación web simple que muestre los datos configurados

Configura el archivo YAML

En este paso, aprenderá a configurar las propiedades de la aplicación utilizando un archivo YAML. Siga los pasos siguientes para completar este paso:

  1. Vaya al directorio src/main/resources de su proyecto.
  2. Cree un nuevo archivo llamado application.yml.
  3. En el archivo application.yml, agregue la siguiente configuración:
## Propiedades definidas por el usuario
school: Stanford University

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

Esta configuración YAML define la propiedad school y las propiedades student, incluyendo el ID del estudiante, el nombre, la edad y los IDs de los cursos.

✨ Revisar Solución y Practicar

Implementa la clase Student

En este paso, implementará la clase Student para manejar los datos de configuración.

  1. Vaya al paquete org.labex.entity y cree un nuevo archivo llamado Student.java.
  2. En el archivo Student.java, agregue el siguiente código:
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 and setters
    //...
}

En esta clase, utilizamos las anotaciones @Component y @ConfigurationProperties para enlazar automáticamente las propiedades del archivo application.yml a los campos correspondientes en la clase Student.

✨ Revisar Solución y Practicar

Implementa el StudentController

En este paso, implementará el StudentController para mostrar los datos configurados.

  1. Vaya al paquete org.labex.controller y cree un nuevo archivo llamado StudentController.java.
  2. En el archivo StudentController.java, agregue el siguiente código:
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();
    }
}

En este controlador, utilizamos la anotación @Value para inyectar la propiedad school, y la anotación @Autowired para inyectar el objeto Student. El método getStudent() mostrará los datos configurados en el navegador cuando se acceda a través del punto final /student.

✨ Revisar Solución y Practicar

Modifica la clase de arranque

En este paso, modificará la clase de arranque para escanear todas las clases en el paquete org.labex.

  1. Vaya al paquete org.labex.springbootyaml y abra el archivo DemoApplication.java.
  2. Actualice la clase DemoApplication de la siguiente manera:
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);
    }
}

Al agregar scanBasePackages="org.labex" a la anotación @SpringBootApplication, garantizamos que todas las clases en el paquete org.labex sean escaneadas y administradas por el contexto de Spring.

✨ Revisar Solución y Practicar

Empaqueta y ejecuta la aplicación

En este último paso, empaquetará la aplicación en un archivo JAR y ejecutará el servicio de Spring Boot.

  1. Abra una terminal y vaya al directorio raíz de su proyecto usando el siguiente comando:
cd ~/project/springbootyaml/
  1. Ejecute los siguientes comandos para empaquetar y iniciar el servicio de Spring Boot:
mvn clean package
mvn spring-boot:run
  1. Una vez que el servicio esté en ejecución, abra un navegador web y vaya a http://localhost:8080/student. Debería ver la información de la escuela y el estudiante configurada mostrada en la página.

La salida debería verse así:

Spring Boot service output

¡Felicitaciones! Ha completado con éxito el proyecto configurando la aplicación usando un archivo YAML, implementando las clases necesarias y ejecutando el servicio de Spring Boot.

✨ Revisar Solución y Practicar

Resumen

¡Felicitaciones! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.