DevBoi

[Spring] Spring에서 사용하는 전체적인 어노테이션들 본문

Develop/[Spring]

[Spring] Spring에서 사용하는 전체적인 어노테이션들

HiSmith 2021. 11. 30. 00:36
반응형

개념만 둥둥 떠있고, 정확하게 공부를 하지 않은, 어노테이션들에 대해서 공부를 하려고한다.

프로젝트를 진행하면서, 잠깐 쓰고 또 까먹고하는걸 확실히 익혀보자

 

@RequestMapping이나, @PostMapping같은거 말고, 잘 안쓰는것들에 대해서 한번 공부를 해보자

 

1. @RequestBody

jsp나, view단에서, ajax로 통신한다고 가정해보자

객체 통신이라 무조건, Post방식을 사용해야한다. (Get으로도 할수있지만, 일일히 하나씩 set하는 개발자는 없을것이다.)

Json.stringify는, json형태의 변수를 string 형으로 변환 시켜주는것이다.

Json데이터를 string으로 Controller에다가 보내게되면, Controller에서는 이 String이 Json형식이라는 것을 어떻게 알수있을까?

바로, contentType을 보고 catch한다.

 

해당 String으로 넘어온것은, 파라미터의 @RequestBody를 통해서, 받게되고, 해당 객체에 매핑이 된다.

신규 스프링 버전에서는 VO로 매핑을 할때는 별도 RequestBody를 사용할 필요없이, 그냥 매핑이 되고, Map이나, VO가 아닌 객체를 통해서 받을때만 해당 RequestBody를 사용해도 된다고 한다.

 

2.@ResponseBody - VIew와 같이 합쳐서 모델을 return 하지않고, 응답 본체로 return

@ResponseBody는 메소드 단위에 붙이는 어노테이션이고, view와 합체되어 모델을 return 하는 것이 아닌,

응답 객체를 메시지 컨버터를 통해 Http 응답 본체로 return 해준다.

(restController의 경우, json방식으로 데이터 통신을 위주로하고, 해당 어노테이션에서는 ResponseBody를 하위 메소드에 지원하기 때문에 별도 ResponseBody없이 모두, 해당 방식으로 통신된다고 이해하면 편하다)

 

 

3. Consumes : 수신 하고자하는 데이터 포맷을 정의

Consumes는, 수신 받을때, request type 의 contentType header가 명시된 데이터의 타입과 일치할때

명시한 데이터 타입으로 return 하게 해준다

쉽게 얘기하면, contetnType check와, response타입을 consumes로, 맞춰준다

 

4. Produces : request의 header의 accpet타입이, 명시된 타입일때, 해당 타입으로 response를 해준다.

 

5.ModelAttribute

JSP나 VIew에서, ControlleR로 특정값을 물고, 통신을 할때,특정 키를 가지고 파라미터로 받게 하고싶다면,해당 어노테이션을 쓴다.

예를 들어서, 넘기는 값이 많은데, 해당 VO에서 같은 변수명을 써야하는 경우등이 이에 해당된다.

해당은 간단하게 user라는 키값으로 올때만 매핑이 되게끔 사용 되는 것이다.

 

 

 

6.RequestParam

해당 5번의 간단한 값 위주의 통신 방법이다. ModeAttribute가, VO위주라면, 해당 은, 단순 값 key 등이 해당된다

 

 

7.PathVariable

- 해당 값은, 경로명에 들어가는 변수를 파라미터로 받는 방식이다.

예를 들면 게시물의 상세 내용에 대한 url이 요청으로 오는 경우에, 해당 /post/info/34 (34번 게시물 상세 내용 보여달라는 요청 url)

의 34번 값을 long id로 받을수 있게 해준다

 

반응형