몬그로이

MVC 의 annotation 들 본문

Organizing Docs/Spring Docs

MVC 의 annotation 들

Mon Groy 2024. 5. 25. 01:00

@Controller

@RestController

= @Controller + @ResponseBody

클래스의 모든 메서드가 @Responsbody를 필요로 할 때 사용하면 좋음 

따라서 view를 반환해야 하는 메서드가 있을 경우는 Controller를 사용하는 것이 좋

 

@Controller 가 붙은 클래스에서 사용하는 URL Annotation

@GetMapping

@PostMapping

@PutMapping

@DeleteMapping

 

@RequestMapping("/url")

Request가 들어왔을 때 받는 클래스를 표시한다

중복되는 URL를 단축

**URL ("/주소/redirect:/{정보}")

**정보: View name, redirect URL, tex, Java 객체

 

@ResponseBody

문자열을 그대로 웹에 띄울 때(JSON형태를 Response에 담을 때)

즉, return 하는 값 그 자체를 Response 객체에 담아서 보내겠다고 표시하는 것

 

@PathVariable

주소에 담겨온 데이터를 빼낼 때 사용

데이터를 사용할 메서드의 매개변수 타입 왼쪽에 적는다

@ PathVariable (required = false)

입력값이 없을 때 오류가 발생하지 않도록 해 줌(대신null로 들어옴)

직접 적지 않으면 기본값이 true 이므로 오류 발생 

 

@RequestParam

Query String 방식으로 주소창/form태그 에 담겨 온 데이터를 빼낼 때 사용

데이터를 사용할 메서드의 매개변수 타입 왼쪽에 적는다

**주소창으로 오는 것은 GetMapping 방식, form태그로 오는 것은 PostMapping 방식

**form 태그에 담겨 온 데이터는 자동변환을 거쳐 Param 방식으로 들어온다. 이를 받는 것

**Param 방식 예 : name=abc&age=123

@RequestParam(required = false)

입력값이 없을 때 오류가 발생하지 않도록 해 줌(대신null로 들어옴)

직접 적지 않으면 기본값이 true 이므로 오류 발생 

@RequestParam 를 생략해도 사용됨

 

@ModelAttribute

Body 에 들어온 Query String 방식의 데이터를 추출,변환하여 객체에 담아서 가져옴

가져온 데이터를 사용할 메서드의 매개변수의 왼쪽에 붙여줌

@PostMapping이나 @GetMapping 에서 모두 사용 가능하나 보통 @PostMapping에서 사용하며

@GetMapping 에서 @RequestParam 으로 받기에는 데이터의 종류/개수가 많은 경우 유용(드물지만 그렇게 사용함)

Setter 또는 오버로딩된 생성자가 반드시 있어야 받아옴 

@ModelAttribute를 생략해도 사용됨

** @RequestParam  @ModelAttribute 둘 다 생략이 가능한데

만약 둘 다 생략된 상태라면?

생략된 둘 중 뭘 사용할지 스프링이 판단하는 기준

받아올 데이터가(매개변수 타입이) Simple Value 타입이라면 @RequestParam 을, 아니라면(Object라면)  @ModelAttribute  을 사용함

 

@RequestBody

HTTP body 부분에 Json 형식으로 데이터가 넘어오는 상황에

이 데이터를 처리하기 위해서는 가져온 데이터를 사용할 메서드의 매개변수의 타입의 왼쪽에 붙여줌

Jackson 라이브러리 적용후 사용

 


Jackson 라이브러리

 

Object 를 Json 타입으로 변환해줌

**JSON - Java Script 와 비슷한 데이터 형식

 

제공하는 클래스인

ObjectMapper

의 메서드

 

.writeValueAsString() 변환하고 싶은 객체를 넣으면 String 타입으로 반환해 줌 (직렬화)

이 때, 객체는 Getter가 있어야 함 >> @Getter 달아놓기

 

.readValue(json, Star.class)

Json 형태의 객체를 Star 형태로 바꿔줌

이 때, 변환될 객체는 getter or Setter나 기본생성자를 가지고 있어야함

또한 Json 문자열 내 이름과 Star 객체의 멤버변수이름이 동일해야함

 


 

 

 

 

 

 

 

 

 

'Organizing Docs > Spring Docs' 카테고리의 다른 글

QueryDSL  (0) 2024.06.30
Entity-Table 에 사용하기 좋은 어노테이션 기능  (0) 2024.06.30
Bean의 생명주기와 그것을 알게 되었을 때의 이점  (0) 2024.05.23
HTTP 메서드  (0) 2024.05.20
Spring - SOLID  (0) 2024.05.19