1. 컨트롤러 유형
어노테이션 | 설명 | 반환 처리 방식 |
@Controller | 뷰 렌더링 컨트롤러 | 반환값 String → View 이름 |
@RestController | API 전용 컨트롤러 | @ResponseBody 포함, 반환값 → HTTP Body |
2. 매핑 관련 어노테이션
어노테이션 | 용도 | 주요 속성 | 특징/주의사항 |
@RequestMapping | URL + HTTP 메서드 매핑 | value, method, params, headers, consumes, produces | 가장 기본, 다중 속성 지원 |
@GetMapping 등 | HTTP 메서드별 축약형 | value, params, headers 등 | 내부적으로 @RequestMapping 사용 |
@PathVariable | 경로 변수 바인딩 | value, required | 이름 생략 시 -parameters 옵션 필요(3.2+) |
3. 요청 데이터 바인딩
어노테이션 | 용도 | 주요 속성 | 특징/주의사항 |
@RequestParam | 단일 파라미터 | name, required, defaultValue | 단순 타입은 생략 가능 |
@ModelAttribute | 파라미터 → 객체 바인딩 | value | 단순 타입 제외 시 기본 적용 |
@RequestBody | 요청 바디(JSON 등) → 객체/문자열 | required | HttpMessageConverter 동작, Content-Type 필수 |
@RequestHeader | HTTP 헤더 값 조회 | name, required, defaultValue | MultiValueMap으로 여러 값 처리 가능 |
@CookieValue | 쿠키 값 조회 | name, required, defaultValue | 쿠키 없을 수 있으니 required=false |
4. 응답 처리
어노테이션/클래스 | 용도 | 특징 |
@ResponseBody | 반환값을 HTTP 바디에 직접 기록 | HttpMessageConverter 사용 |
HttpEntity | 바디 + 헤더 직접 제어 | 상태코드 설정 불가 |
ResponseEntity | 바디 + 헤더 + 상태코드 제어 | REST 응답 제어에 최적 |
5. HttpMessageConverter 기본 목록
컨버터 | 지원 타입 | 설명 |
StringHttpMessageConverter | String | text/plain 변환 |
MappingJackson2HttpMessageConverter | 객체 ↔ JSON | Jackson 라이브러리 사용 |
ByteArrayHttpMessageConverter | byte[] | 이진 데이터 처리 |
6. DispatcherServlet 요청~응답 흐름
[요청]
↓
DispatcherServlet
↓
HandlerMapping → 컨트롤러 메서드 찾기
↓
HandlerAdapter → 실행 준비
↓
ArgumentResolver → 메서드 파라미터 생성
↓
컨트롤러 실행
↓
ReturnValueHandler → 반환 처리
↓
HttpMessageConverter → 변환(JSON, String 등)
↓
[응답]
7. 어노테이션별 동작 시점
단계 | 관련 어노테이션 |
ArgumentResolver | @RequestParam, @ModelAttribute, @RequestBody, @PathVariable, @RequestHeader, @CookieValue |
HttpMessageConverter(요청) | @RequestBody, HttpEntity |
HttpMessageConverter(응답) | @ResponseBody, HttpEntity, ResponseEntity |
8. 실무 활용 팁
- URL 매핑 시: @GetMapping, @PostMapping 등 축약형 적극 사용
- 파라미터 바인딩:
- 단순 타입 → @RequestParam
- 객체 → @ModelAttribute
- JSON 바디 → @RequestBody
- API 응답: @RestController + ResponseEntity 조합 추천
- Content-Type/Accept 조건을 걸어 잘못된 요청은 컨트롤러 진입 전에 차단
- -parameters 옵션 설정 습관화 (변수명 생략 가능하게)
'Spring' 카테고리의 다른 글
[Spring] MVC 19편 - 웹 페이지 만들기 (1) (1) | 2025.08.18 |
---|---|
[Spring] MVC 18편 - HTTP 응답과 메시지 컨버터 (0) | 2025.08.18 |
[Spring] MVC 16편 - MVC 기본 기능 총정리편 + 흐름도 (3) | 2025.08.14 |
[Spring] MVC 15편 - HTTP 메시지 컨버터와 요청 처리 구조 (1) | 2025.08.14 |
[Spring] MVC 14편 - HTTP 메시지 바디와 JSON 처리 (2) | 2025.08.14 |