DevBoi

[Spring] RequestBody, RequestParam, ModelAttribute 본문

Develop/[Spring]

[Spring] RequestBody, RequestParam, ModelAttribute

HiSmith 2022. 3. 28. 19:29
반응형

@Requestparam

1:1로 값을 바인딩 해준다. (Get방식만 지원)

1:1로 받는값이 매서드 매게변수의 생성자의 인자와 일치하면 객체를 바로 바인드 한다.

잘못된 파라미터값이 오면 400발생

바인딩 해오는 값과 일치하면 인스턴스를 그냥 주입해주고, 아니라면 별도 이름을 지정, 해당 이름 과 같다면 주입해준다.

 

@ModelAttribute

여러 파라미터 매게변수를 바인딩해준다. 단일 값부터 오브젝트까지 다양하다.

setter를 사용해 담아주기 때문에 매게변수의 바인딩을 받는 필드는 setter가 있어야 한다.

타입변환에 실패하더라도 작업은 계속된다.

메서드 인자의 model의 attribute에 접근 할 수 있다.

파라미터 이름을 명시하지 않으면 필드명과 일치하는 필드의 Setter를 이용해서 데이터 바인딩을 한다.

 

@RequestBody

Post요청 시 기본 생성자가 있어야 하고, Setter는 없어도된다.

get요청시 setter가 있어야 한다.

HttpMessageReader가 requestBody를 java object로 역직렬화 한다.

스프링에서는 json을 javaObject로 변환해주는 것은  Jackson2HttpMessageConverter 이다.

이런 역직렬화는, Objectmapper의 readValue 메서드를 사용해서 변환하기 때문에 setter가 필요없다.

 

Get의 경우에는 query parameter로 받기 때문에, Spring 의 webDatabinder를 사용합니다.

자바빈 방식이란, setter를 활용해서 값을 할당하기 때문에, setter가 필요하다

반응형

'Develop > [Spring]' 카테고리의 다른 글

[Spring] Hikari란  (0) 2022.03.28
[Spring] Transactional  (0) 2022.03.28
[Spring] root, servlet context, web.xml  (0) 2022.03.28
[Spring] Maven 이란  (0) 2022.03.28
[Springboot] starter dependency  (0) 2022.03.28