spring

HandlerMapping & RequestMapping

devJK93 2024. 12. 2.

📝 HandlerMapping & RequestMapping

1. HandlerMapping

HandlerMapping은 Spring MVC의 요청 처리 흐름에서 요청 URL을 적절한 컨트롤러(Handler)로 매핑하는 역할을 담당합니다.

HandlerMapping의 역할

  • 클라이언트로부터 들어온 HTTP 요청 URL을 기반으로 어떤 컨트롤러 메서드를 호출할지 결정.
  • Spring MVC가 제공하는 다양한 HandlerMapping 구현체 중 하나를 사용하여 URL과 컨트롤러를 연결.

HandlerMapping의 구현체

  • RequestMappingHandlerMapping: 애노테이션 기반의 매핑을 처리.
  • SimpleUrlHandlerMapping: XML 또는 Java 설정 파일을 통해 매핑 정의.
  • BeanNameUrlHandlerMapping: Bean 이름을 URL로 매핑.

2. RequestMapping

RequestMapping은 Spring MVC에서 요청 URL과 HTTP 메서드(GET, POST 등)를 컨트롤러의 특정 메서드에 매핑하는 애노테이션입니다.

RequestMapping의 주요 속성

  • value 또는 path: URL 패턴 정의
  • method: HTTP 메서드(GET, POST 등) 지정
  • params: 요청 파라미터 조건
  • headers: 특정 HTTP 헤더 조건

RequestMapping의 다양한 HTTP 메서드 처리

  • @GetMapping
  • @PostMapping
  • @PutMapping
  • @DeleteMapping
  • @PatchMapping

3. HandlerMapping과 RequestMapping의 관계

RequestMappingRequestMappingHandlerMapping의 내부에서 처리되는 매핑 규칙을 정의하는 역할을 합니다.

Spring MVC 요청 처리 흐름에서의 역할

  1. 클라이언트 요청: GET /example
  2. DispatcherServlet: 요청을 받고, 처리할 Handler를 찾기 위해 HandlerMapping 호출.
  3. HandlerMapping: 적절한 컨트롤러 메서드 매핑.
  4. HandlerAdapter: 메서드 호출 준비 및 실행.
  5. 컨트롤러 실행: 매핑된 메서드 실행 후 결과 반환.

예제 코드


@RestController
@RequestMapping("/api")
public class ExampleController {

    // URL: /api/example
    @GetMapping("/example")
    public String getExample() {
        return "This is an example GET response";
    }

    // URL: /api/example
    @PostMapping("/example")
    public String postExample() {
        return "This is an example POST response";
    }
}
    

내부 동작

  1. Spring MVC는 요청 URL /api/example와 HTTP 메서드를 확인.
  2. RequestMappingHandlerMapping은 매핑 정보를 기반으로 메서드 선택.
  3. 선택된 메서드를 호출해 결과를 반환.

결론

  • HandlerMapping: 요청 URL과 컨트롤러를 연결하는 Spring MVC의 핵심 컴포넌트.
  • RequestMapping: 컨트롤러의 메서드와 URL을 매핑하기 위한 애노테이션.
  • RequestMappingHandlerMapping: HandlerMapping 구현체 중 하나로, 애노테이션 기반 매핑 처리.

김영한님의 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

댓글