Configuração com Arquivos YAML

JavaBeginner
Pratique Agora

Introdução

Neste projeto, você aprenderá como configurar uma aplicação Spring Boot usando um arquivo YAML, implementar uma classe para lidar com os dados de configuração e criar um controlador para exibir as informações configuradas em uma página web.

👀 Visualização

Resultado da página web Spring Boot

🎯 Tarefas

Neste projeto, você aprenderá:

  • Como configurar as propriedades da aplicação usando um arquivo YAML
  • Como implementar uma classe Student para lidar com os dados de configuração
  • Como criar um StudentController para exibir os dados configurados em uma página web
  • Como modificar a classe de inicialização para escanear todas as classes no pacote do projeto

🏆 Conquistas

Após concluir este projeto, você será capaz de:

  • Usar arquivos YAML para configuração da aplicação
  • Usar a annotation @ConfigurationProperties para vincular automaticamente dados de configuração a uma classe
  • Usar a annotation @Value para injetar valores de configuração em um controlador
  • Usar a annotation @SpringBootApplication para configurar a varredura de componentes (component scanning)
  • Desenvolver uma aplicação web simples que exibe os dados configurados

Configurar o Arquivo YAML

Nesta etapa, você aprenderá como configurar as propriedades da aplicação usando um arquivo YAML. Siga os passos abaixo para completar esta etapa:

  1. Navegue até o diretório src/main/resources no seu projeto.
  2. Crie um novo arquivo chamado application.yml.
  3. No arquivo application.yml, adicione a seguinte configuração:
## Propriedades definidas pelo usuário
school: Stanford University

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

Esta configuração YAML define a propriedade school e as propriedades student, incluindo o ID do aluno, nome, idade e IDs dos cursos.

✨ Verificar Solução e Praticar

Implementar a Classe Student

Nesta etapa, você implementará a classe Student para lidar com os dados de configuração.

  1. Navegue até o pacote org.labex.entity e crie um novo arquivo chamado Student.java.
  2. No arquivo Student.java, adicione o seguinte 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
    // ...
}

Nesta classe, usamos as annotations @Component e @ConfigurationProperties para vincular automaticamente as propriedades do arquivo application.yml aos campos correspondentes na classe Student.

✨ Verificar Solução e Praticar

Implementar o StudentController

Nesta etapa, você implementará o StudentController para exibir os dados configurados.

  1. Navegue até o pacote org.labex.controller e crie um novo arquivo chamado StudentController.java.
  2. No arquivo StudentController.java, adicione o seguinte 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();
    }
}

Neste controller, usamos a annotation @Value para injetar a propriedade school e a annotation @Autowired para injetar o objeto Student. O método getStudent() exibirá os dados configurados no navegador quando acessado através do endpoint /student.

✨ Verificar Solução e Praticar

Modificar a Classe Startup

Nesta etapa, você modificará a classe de inicialização para escanear todas as classes no pacote org.labex.

  1. Navegue até o pacote org.labex.springbootyaml e abra o arquivo DemoApplication.java.
  2. Atualize a classe DemoApplication da seguinte forma:
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);
    }
}

Ao adicionar scanBasePackages="org.labex" à annotation @SpringBootApplication, garantimos que todas as classes no pacote org.labex sejam escaneadas e gerenciadas pelo contexto Spring.

✨ Verificar Solução e Praticar

Empacotar e Executar a Aplicação

Nesta etapa final, você empacotará a aplicação em um arquivo JAR e executará o serviço Spring Boot.

  1. Abra um terminal e navegue até o diretório raiz do seu projeto usando o seguinte comando:
cd ~/project/springbootyaml/
  1. Execute os seguintes comandos para empacotar e iniciar o serviço Spring Boot:
mvn clean package
mvn spring-boot:run
  1. Uma vez que o serviço estiver em execução, abra um navegador web e navegue até http://localhost:8080/student. Você deverá ver as informações da escola e do aluno configuradas exibidas na página.

A saída deve ser semelhante a esta:

Spring Boot service output

Parabéns! Você concluiu com sucesso o projeto configurando a aplicação usando um arquivo YAML, implementando as classes necessárias e executando o serviço Spring Boot.

✨ Verificar Solução e Praticar

Resumo

Parabéns! Você concluiu este projeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.