SPRING Annotation (2)

Ga0·2023년 4월 16일
0

SPRING

목록 보기
5/14

SPRING Annotation(1) 포스트를 이어서 Annotation을 정리하려고 한다.

주요 Annotation(2)

@RequestMapping

  • 요청 URL을 어떤 method가 처리할지 mapping해주는 어노테이션이다.
  • 요청받는 형식인 GET, POST, PATCH, PUT, DELETE를 정의하기도 한다.

@GetMapping

  • RequestMapping(Method=RequestMethod.GET)와 같은 것으로 GET요청 방식으로 제공되는 어노테이션이다.

@PostMapping

  • RequestMapping(Method=RequestMethod.POST)와 같은 것으로 POST방식으로 제공되는 어노테이션이다.

@PutMapping

  • RequestMapping(Method=RequestMethod.PUT)와 같은 것으로 PUT 요청 방식으로 제공되는 어노테이션이다.

@DeleteMapping

  • RequestMapping(Method=RequestMethod.DELETE)와 같은 것으로 DELETE요청 방식으로 제공되는 어노테이션이다.

@PathVariable

  • method parameter앞에 사용하면서 해당 URL에서 {특정값}을 변수로 받아올 수 있다.
  • 하나의 값을 받아오는 어노테이션이며, HTTP 요청에 대해 매핑되는 request parameter값이 자동으로 Binding된다.
  • URI에서 각 구분자에 들어오는 값을 처리해야할때 사용한다.

@RequestParam

  • HttpServletRequest 객체와 같은 역할을 하며 메소드의 매개변수 값으로 매개변수에 담긴 value값을 받아오게 된다.
  • 즉, URL 뒤에 붙은 매개변수 값을 가져올 때 사용한다.
  • 여러개의 값을 가져올 수 있다.

@RequestBody

  • 이 어노테이션이 붙은 매개변수에는 http 요청의 본문(body)이 그대로 전달된다.
  • 일반적인 GET/POST 의 요청 매개변수라면 @RequestBody를 사용할 일이 없을 것이고 반면에 XML이나 JSON기반의 메시지를 사용하는 요청의 경우에 이 방법이 매우 유용하다.
@RequestMapping("/model_ requestBody")
public String ajaxTest(@RequestBody DataDto dataDto) throws Exception {

  return dataDto.getContent();
}

@ModelAttribute

  • @RequestBody와 마찬가지로 클라이언트 측에서 보낸 데이터를 JAVA 코드에서 사용할 수 있는 객체로 만들어주는(Java Object Binding) 공통점이 있다.
  • 요청 파라미터를 받아서 필요한 객체를 만들고 그 객체에 값을 넣어줘야하는데 이 @ModelAttribute를 사용하면 자동으로 객체를 만들어준다.
@ResponseBody
@RequestMapping("/model_Attribute")
public String ModelModelAttribute(@ModelAttribute DataDto dataDto) {
    
    log.info("title={}, content={}", dataDto.getTitle(), dataDto.getContent());
    log.info("DataDto={}", dataDto);

    return "ok";

}

@ResponseBody

  • HttpMessageConverter를 이용하여 JSON 혹은 XML로 요청에 응답할 수 있게 해주는 어노테이션이다.
  • View가 아닌 JSON 형식의 값을 응답할 때 사용하는 어노테이션으로 문자열을 리턴하면 그 값을 http response header가 아닌 response body에 들어간다.
  • RestController을 쓴다면 쓸 필요가 없다. 그렇지 않을 경우만 이 어노테이션을 추가시 httpresponse로 응답할 수 있게 해준다.
@Data
public class DataDto {
    private String title;
    private String content;
}
@ResponseBody
@RequestMapping("/model_ResponseBody")
public DataDto ModelRequestBody(@RequestParam String title, @RequestParam String content) {
    DataDto dataDto= new DataDto ();
    dataDto.setTitle(title);
    dataDto.setContent(content);

		log.info("title={}, content={}", dataDto.getTitle(), dataDto.getContent());
    log.info("DataDto={}", dataDto);

    return dataDto;

}

0개의 댓글