YAML 파일로 설정하기

JavaBeginner
지금 연습하기

소개

이 프로젝트에서는 YAML 파일을 사용하여 Spring Boot 애플리케이션을 구성하고, 구성 데이터를 처리하는 클래스를 구현하며, 구성된 정보를 웹 페이지에 표시하는 컨트롤러를 생성하는 방법을 배우게 됩니다.

👀 미리보기

Spring Boot web page result

🎯 과제

이 프로젝트에서 다음을 배우게 됩니다:

  • YAML 파일을 사용하여 애플리케이션 속성을 구성하는 방법
  • 구성 데이터를 처리하는 Student 클래스를 구현하는 방법
  • 구성된 데이터를 웹 페이지에 표시하는 StudentController를 생성하는 방법
  • 프로젝트 패키지의 모든 클래스를 스캔하도록 시작 클래스를 수정하는 방법

🏆 성과

이 프로젝트를 완료하면 다음을 수행할 수 있습니다:

  • 애플리케이션 구성을 위해 YAML 파일 사용
  • @ConfigurationProperties 어노테이션을 사용하여 구성 데이터를 클래스에 자동으로 바인딩
  • @Value 어노테이션을 사용하여 구성 값을 컨트롤러에 주입
  • @SpringBootApplication 어노테이션을 사용하여 컴포넌트 스캔 구성
  • 구성된 데이터를 표시하는 간단한 웹 애플리케이션 개발

YAML 파일 구성

이 단계에서는 YAML 파일을 사용하여 애플리케이션 속성을 구성하는 방법을 배우게 됩니다. 이 단계를 완료하려면 아래 단계를 따르세요:

  1. 프로젝트의 src/main/resources 디렉토리로 이동합니다.
  2. application.yml이라는 새 파일을 생성합니다.
  3. application.yml 파일에 다음 구성을 추가합니다:
## Self-defined properties
school: Stanford University

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

이 YAML 구성은 school 속성과 학생 ID, 이름, 나이 및 코스 ID 를 포함하는 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 객체를 주입합니다. /student 엔드포인트를 통해 접근하면 getStudent() 메서드가 브라우저에 구성된 데이터를 표시합니다.

Startup 클래스 수정

이 단계에서는 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);
    }
}

@SpringBootApplication 어노테이션에 scanBasePackages="org.labex"를 추가하여 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 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.

✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습