ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring Boot 설정 및 동작 원리
    BackEnd/Spring Boot 2022. 4. 5. 21:30
    반응형

    Overview

      해당 글에서는 Spring Boot의 설정과 동작 원리에 대해 알아보고 클라이언트의 요청을 받아 결과를 반환하는 REST Controller를 구현하겠습니다.

     

    프로젝트 구조

     

    Spring Boot 설정

      Spring Boot 설정은 resources 폴더 하위의 application.properties(설정이름=값) 또는 application.yml(설정이름: 값) 파일을 사용합니다. Spring Boot의 기본 설정 파일은 application.properties이나 application.yml 파일을 주로 사용합니다. application.yml 파일은 계층 구조로 표현할 수 있고 prefix의 중복 제거가 가능해 가독성이 좋습니다.

     

      application.properties 파일을 application.yml 파일로 변경하고 로깅 레벨과 포트를 변경하겠습니다.

    # port 변경
    server:
      port: 8088
    
    # logging level 변경
    logging:
      level:
        org.springframework: DEBUG

     

      logging level을 'DEBUG'로 설정하면 더 많은 로그가 출력되는 것을 확인할 수 있습니다. 로그를 보면 Spring Boot 기동 시 자동으로 구성되는 정보들을 확인할 수 있습니다. 그 중 DispatcherServletAutoConfiguration은 클라이언트의 요청을 처리하는 게이트웨이 역할을 하며, HttpMessageConvertersAutoConfiguration은 기본적으로 JSON 데이터 포맷으로 데이터를 변환시킨 다음 클라이언트에게 반환하는 역할을 합니다.

     

    DispatcherServlet

      DispatcherServlet은 클라이언트의 모든 요청을 한 곳으로 받아서 처리합니다. 요청에 맞는 Handler로 요청을 전달하고 실행결과를 Http Response 형태로 만들어서 반환합니다.

     

      Spring MVC에서는 아래와 같은 구조를 가집니다. 클라이언트의 요청을 DispatcherServlet이 받아 Handler Mapping이나 Controller에 전달하고 처리된 결과 값을 Model 형태로 받습니다. 최종적으로 클라이언트에게 보여주고자 하는 페이지 포맷에 따라 ViewResolver가 페이지(View)를 생성하고 페이지에 Model을 포함시켜 반환하게 됩니다(ModelAndView).

    Dispatcher Servlet

     

      Spring Boot 기반의 RESTful Web Services의 경우, 클라이언트에게 보여지는 형태의 서비스가 아니라 클라이언트의 요청을 JSON 또는 XML 형태의 데이터 포맷으로 반환합니다. 즉, Spring MVC의 View 형태의 페이지를 생성할 필요가 없습니다. 이렇게 클라이언트에게 보여지는 페이지를 가지지 않는 Controller를 REST Controller라고 합니다.

     

    HelloController

      클라이언트의 요청('이름')을 받아 결과('Hello, 이름')를 반환하는 REST Controller를 구현하면 아래와 같습니다.

    package com.spring.springboot;
    
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class HelloController {
    
    //  @RequestMapping(method= RequestMethod.GET, path="/hello/{name}")
      @GetMapping(path="/hello/{name}") // endpoint
      public String hello(@PathVariable String name) {
        return String.format("Hello, %s", name);
      }
    
    }
    • @RestController: @Controller + @ResponseBody
    • @GetMapping: @RequestMapping에서 HTTP 메서드를 GET으로 지정한 것과 동일합니다.
    • @PathVariable: URL 경로의 변수를 매핑합니다.

    반응형

    'BackEnd > Spring Boot' 카테고리의 다른 글

    Validation  (0) 2022.04.06
    Exception Handling  (0) 2022.04.05
    Spring Boot  (0) 2022.04.02
    Swagger  (0) 2021.07.23
    Lombok  (0) 2021.07.09

    댓글

Designed by Tistory.