인프런 커뮤니티 질문&답변

조건희님의 프로필 이미지
조건희

작성한 질문수

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

검증 직접 처리 - 개발

파라미터 받는 방법에 대하여

작성

·

277

1

컨트롤러의 메서드에 파라미터로 VO나 도메인 객체의 경우

ex) Item item만 적더라도

@ModelAttribute가 자동으로 붙기떄문에 생략해도
된다고 이해하였는데요

 

String이나 Integer의 경우 생략시 @RequestParam이
자동으로 붙으나 Map같은 경우에는 왜
@RequestParam을 강제로 붙여야지만 나오는지
혹시 아실까요?..

답변 1

1

안녕하세요. 조건희님, 공식 서포터즈 OMG입니다.

아주 단순히 생각하면 스프링에서 Map으로 파라미터를 받는 경우 @RequestParam 어노테이션이 있을 때만 동작하는 코드가 구현되어 있기 때문입니다.

아래는 RequestParamMapMethodArgumentResolver 코드 일부인데요,

 

supportsParameter(메서드): 지원하는 파라미터인지 확인하는 메서드

boolean(반환 타입): 지원한다 / 안한다

 

supportsParameter()메서드 코드를 보면,

@RequestParam 애노테이션이 선언 여부와 Map 타입 여부 등을 체크하는 로직이 구현되어 있습니다.

image

 

참고) https://github.com/spring-projects/spring-framework/blob/main/spring-web/src/main/java/org/springframework/web/method/annotation/RequestParamMapMethodArgumentResolver.java#L65

감사합니다.

조건희님의 프로필 이미지
조건희

작성한 질문수

질문하기