📝 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의 관계
RequestMapping
은 RequestMappingHandlerMapping
의 내부에서 처리되는 매핑 규칙을 정의하는 역할을 합니다.
Spring MVC 요청 처리 흐름에서의 역할
- 클라이언트 요청:
GET /example
- DispatcherServlet: 요청을 받고, 처리할 Handler를 찾기 위해
HandlerMapping
호출. - HandlerMapping: 적절한 컨트롤러 메서드 매핑.
- HandlerAdapter: 메서드 호출 준비 및 실행.
- 컨트롤러 실행: 매핑된 메서드 실행 후 결과 반환.
예제 코드
@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";
}
}
내부 동작
- Spring MVC는 요청 URL
/api/example
와 HTTP 메서드를 확인. RequestMappingHandlerMapping
은 매핑 정보를 기반으로 메서드 선택.- 선택된 메서드를 호출해 결과를 반환.
결론
- HandlerMapping: 요청 URL과 컨트롤러를 연결하는 Spring MVC의 핵심 컴포넌트.
- RequestMapping: 컨트롤러의 메서드와 URL을 매핑하기 위한 애노테이션.
- RequestMappingHandlerMapping:
HandlerMapping
구현체 중 하나로, 애노테이션 기반 매핑 처리.
'spring' 카테고리의 다른 글
SpringMVC ArgumentResolver (0) | 2024.12.02 |
---|---|
Entity 클래스와 DTO를 분리하는 이유 (0) | 2024.11.30 |
@RequestBody @Valid Object obj, BindingResult br 타입에러가 br에 담기지 않는 이유 (0) | 2024.11.30 |
도메인 모델 패턴 vs 트랜잭션 스크립트 패턴 (0) | 2024.11.25 |
자바 접근제어자 개념과 JPA @Embeddable에서 기본생성자에 proteced를 사용하는 이유 (0) | 2024.11.24 |
댓글