• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

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

23.11.30 12:07 작성 조회수 179

1

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

ex) Item item만 적더라도

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

 

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

답변 1

답변을 작성해보세요.

1

OMG님의 프로필

OMG

2023.11.30

안녕하세요. 조건희님, 공식 서포터즈 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

감사합니다.