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

🎯 과제
이 프로젝트에서 다음을 배우게 됩니다:
- YAML 파일을 사용하여 애플리케이션 속성을 구성하는 방법
- 구성 데이터를 처리하는
Student클래스를 구현하는 방법 - 구성된 데이터를 웹 페이지에 표시하는
StudentController를 생성하는 방법 - 프로젝트 패키지의 모든 클래스를 스캔하도록 시작 클래스를 수정하는 방법
🏆 성과
이 프로젝트를 완료하면 다음을 수행할 수 있습니다:
- 애플리케이션 구성을 위해 YAML 파일 사용
@ConfigurationProperties어노테이션을 사용하여 구성 데이터를 클래스에 자동으로 바인딩@Value어노테이션을 사용하여 구성 값을 컨트롤러에 주입@SpringBootApplication어노테이션을 사용하여 컴포넌트 스캔 구성- 구성된 데이터를 표시하는 간단한 웹 애플리케이션 개발
YAML 파일 구성
이 단계에서는 YAML 파일을 사용하여 애플리케이션 속성을 구성하는 방법을 배우게 됩니다. 이 단계를 완료하려면 아래 단계를 따르세요:
- 프로젝트의
src/main/resources디렉토리로 이동합니다. application.yml이라는 새 파일을 생성합니다.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 클래스를 구현합니다.
org.labex.entity패키지로 이동하여Student.java라는 새 파일을 생성합니다.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를 구현합니다.
org.labex.controller패키지로 이동하여StudentController.java라는 새 파일을 생성합니다.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 패키지의 모든 클래스를 스캔하도록 시작 클래스를 수정합니다.
org.labex.springbootyaml패키지로 이동하여DemoApplication.java파일을 엽니다.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 서비스를 실행합니다.
- 터미널을 열고 다음 명령을 사용하여 프로젝트의 루트 디렉토리로 이동합니다:
cd ~/project/springbootyaml/
- 다음 명령을 실행하여 Spring Boot 서비스를 패키징하고 시작합니다:
mvn clean package
mvn spring-boot:run
- 서비스가 실행되면 웹 브라우저를 열고
http://localhost:8080/student로 이동합니다. 페이지에 구성된 학교 및 학생 정보가 표시되어야 합니다.
출력은 다음과 같아야 합니다:

축하합니다! YAML 파일을 사용하여 애플리케이션을 구성하고, 필요한 클래스를 구현하고, Spring Boot 서비스를 실행하여 프로젝트를 성공적으로 완료했습니다.
요약
축하합니다! 이 프로젝트를 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.



