728x90
Spring 기반 프로젝트에서 Controller 내부 메소드의 인자에 지정하는 어노테이션이다. 일반적으로 primitive type은 @ReuqestParam 로 지정하고 reference type 은 @ModelAttribute 로 지정한다. 그런데 만약 이를 생략하면 어떻게 되나? primitive type는 자동으로 @ReuqestParam을 지정한 것처럼 동작하고 reference type은 자동으로 @ModelAttribute를 지정한 것처럼 동작한다.
그런데 또 한가지 중요한 사실이 있으니 @ReuqestParam 의 required 는 default 가 true로 요청시 해당 파라미터가 존재하지 않으면 기본적으로 에러가 발생한다. 파라미터로 primitive type 를 사용하고 @ReuqestParam 를 선언했을 때는 어떨까? 이 때는 required 가 false 인 것처럼 동작한다. 헷갈리지 말아야 할 중요한 사실이다.
@RequestParam, @ModelAttribute 를 생략하면 POJO 형태로 작성할 수 있다는 장점이 있지만 명시적으로 작성하는게 권장되기도 하고 그렇게 하는게 추후 분석에도 좋을 것 같다.
더군다나 해당 어노테이션에서 제공하는 옵션들을 잘만 활용하면 반복적인 코드량도 감소시킬 수 있다. 대표적으로 @RequestParam 의 required 옵션은 필수값 체크를 대신해준다.
728x90
'Backend > Spring+Boot' 카테고리의 다른 글
@RequestPart? (0) | 2021.08.05 |
---|---|
Ajax와 @RequestBody, @ResponseBody (0) | 2021.08.04 |
Thymeleaf 훑어보기 (0) | 2021.07.30 |
의존성 주입시 중복되는 타입에 대한 처리 (0) | 2021.07.23 |
Spring에서 권장되는 의존성 주입 방법 (0) | 2021.07.23 |