본문 바로가기
Spring boot/스프링 부트 3 백엔드 개발자 되기(자바편)

[2장] 스프링 부트 3 시작하기(2) - 스프링 부트 3 예제 만들기

by 리버🐦‍🔥 2023. 7. 25.

2.3 스프링 부트3

    2.3.1 첫 번째 스프링 부트 예제 만들기

    - Get 요청을 하면 "Hello, world!"를 반환하는 예제 테스트

    - Get 요청이기 때문에 주소 뒤에 "test"라는 경로가 같이 나오게 된다

package me.kyungsoolee.springbootdeveloper;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {
    @GetMapping("/test")
    public String test() {
        return "Hello, world!";
    }
}

▲ 재실행 시 "Hello, world!"문자열이 반환되는 것을 볼 수 있다.

 

    2.3.2 스프링 부트 스타터 살펴보기

    - 스프링 부트 스타터 : 의존성이 모여있는 그룹

    - 스타터 명명규칙 : spring-boot-starter-{작업유형}

    - (ex. JDBC 관련 스타터 -> spring-boot-starter-jdbc)

    - 이 외에도 다양한 스타터들이 있다(유효성 검사, 애플리케이션 테스트 등...)

▲ 다양한 스타터들

        2.3.4 스프링 부트 3와 자바 버전

        - 자바 17의 주요 변화들

            - 텍스트 블록

            - formatted() 메서드

            - 레코드

            - 패턴 매칭

            - 자료형에 맞는 case 처리

            - Servelt, JPA의 네임스페이스가 Jakarta로 대체

            - GraalVM 기반의 스프링 네이티브 공식 지원

 

2.4 스프링 부트 3 코드 이해하기

    2.4.1 @SpringBootApplication 이해하기

        - 1단계 : SpringBootDeveloperApplication.java 파일 열기

            - 이 클래스는 자바의 main()과 같은 역할을 한다. (스프링 부트가 여기서 시작)

           - SpringBootApplication 애너테이션을 통해 기본 설정을 해준다.

            - SpringApplication.run()은 애플리케이션을 실행한다.

                - 첫 번째 인수 : spring boot3 애플리케이션의 메인클래스로 사용할 클래스

                - 두 번째 인수 : 커맨드 라인의 인수들

        - 2단계 : @SpringBootApplication 구성요소들

▲ cmd + 클릭을 통해 애너테이션들을 확인하는 모습(중략)

            - @SpringBootConfiguration : 스프링 부트 관련 설정을 나타내는 애너테이션

            - @ComponentScan : 사용자가 등록한 빈을 읽고 등록하는 애너테이션

            - @EnableAutoConfiguration : 스프링 부트에서 자동 구성을 활성화하는 애너테이션

            - 이외의 애너테이션들 : @Configuration, @Repository, @Controller, @Restcontroller, @Service ...

 

    2.4.2 테스트 컨트롤러 살펴보기

▲ /test GET 요청이 오면 test() 메서드를 실행하는 컨트롤러

        - TestContorller를 @RestController라는 애너테이션을 통해 라우터로 지정

더보기

@Restcontroller : 라우터 역할을 하는 애너테이션

라우터 : HTTP 요청과 메서드를 연결하는 장치

        - @Controller에서 @Component 애너테이션을 가지고 있기 때문에 @RestController와 동일하게 사용 

        (@RestController는 @Controller를 포함. 단지 명확하게 구분하기 위해서 서로 분류. [command + 클릭]을 통해 확인 가능)