Настройка с помощью файлов YAML

JavaBeginner
Практиковаться сейчас

Введение

В этом проекте вы научитесь настраивать приложение Spring Boot с использованием файла YAML, реализовать класс для обработки конфигурационных данных и создать контроллер для отображения настроенной информации на веб-странице.

👀 Предварительный просмотр

Результат веб-страницы Spring Boot

🎯 Задачи

В этом проекте вы научитесь:

  • настраивать свойства приложения с использованием файла YAML;
  • реализовать класс Student для обработки конфигурационных данных;
  • создать StudentController для отображения настроенных данных на веб-странице;
  • изменить класс запуска, чтобы сканировать все классы в пакете проекта.

🏆 Достижения

После завершения этого проекта вы сможете:

  • использовать файлы YAML для настройки приложения;
  • использовать аннотацию @ConfigurationProperties для автоматической привязки конфигурационных данных к классу;
  • использовать аннотацию @Value для внедрения значений конфигурации в контроллер;
  • использовать аннотацию @SpringBootApplication для настройки сканирования компонентов;
  • разрабатывать простое веб-приложение, которое отображает настроенные данные.

Настройте файл YAML

В этом шаге вы научитесь настраивать свойства приложения с использованием файла YAML. Следуйте шагам ниже, чтобы выполнить этот шаг:

  1. Перейдите в каталог src/main/resources в вашем проекте.
  2. Создайте новый файл с именем application.yml.
  3. В файле application.yml добавьте следующую конфигурацию:
## Собственные свойства
school: Stanford University

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

Эта конфигурация YAML определяет свойство school и свойства student, включая идентификатор студента, имя, возраст и идентификаторы курсов.

✨ Проверить решение и практиковаться

Реализуйте класс Student

В этом шаге вы реализуете класс Student для обработки конфигурационных данных.

  1. Перейдите в пакет org.labex.entity и создайте новый файл с именем Student.java.
  2. В файле Student.java добавьте следующий код:
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
    //...
}

В этом классе мы используем аннотации @Component и @ConfigurationProperties, чтобы автоматически привязать свойства из файла application.yml к соответствующим полям в классе Student.

✨ Проверить решение и практиковаться

Реализуйте StudentController

В этом шаге вы реализуете StudentController для отображения настроенных данных.

  1. Перейдите в пакет org.labex.controller и создайте новый файл с именем StudentController.java.
  2. В файле StudentController.java добавьте следующий код:
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();
    }
}

В этом контроллере мы используем аннотацию @Value для внедрения свойства school и аннотацию @Autowired для внедрения объекта Student. Метод getStudent() будет отображать настроенные данные в браузере при доступе по конечной точке /student.

✨ Проверить решение и практиковаться

Измените класс запуска

В этом шаге вы измените класс запуска, чтобы сканировать все классы в пакете org.labex.

  1. Перейдите в пакет org.labex.springbootyaml и откройте файл DemoApplication.java.
  2. Обновите класс DemoApplication следующим образом:
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);
    }
}

Добавив scanBasePackages="org.labex" в аннотацию @SpringBootApplication, мы гарантируем, что все классы в пакете org.labex будут сканированы и управлены контекстом Spring.

✨ Проверить решение и практиковаться

Упакуйте и запустите приложение

В этом финальном шаге вы упакуете приложение в JAR-файл и запустите службу Spring Boot.

  1. Откройте терминал и перейдите в корневой каталог проекта с помощью следующей команды:
cd ~/project/springbootyaml/
  1. Запустите следующие команды для упаковки и запуска службы Spring Boot:
mvn clean package
mvn spring-boot:run
  1. Как только служба запущена, откройте веб-браузер и перейдите по адресу http://localhost:8080/student. На странице должна отображаться настроенная информация о школе и студенте.

Вывод должен выглядеть так:

Spring Boot service output

Поздравляем! Вы успешно завершили проект, настроив приложение с использованием файла YAML, реализовав необходимые классы и запустив службу Spring Boot.

✨ Проверить решение и практиковаться

Резюме

Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.