<aside> 1️⃣ @RequestMapping과 @GetMapping은 뭐가다를까?
</aside>
@RequestMapping
, @GetMapping
, @PostMapping
등의 어노테이션은 HTTP 요청을 Java 메소드에 매핑하는 데 사용된다.<aside> 2️⃣ 어노테이션 설명
</aside>
@RequestMapping
이 어노테이션은 Spring 2.5 버전부터 제공되었으며, 클래스 또는 메소드에 적용할 수 있다. 이 어노테이션은 HTTP 요청의 URL, 메소드, 파라미터, 헤더 등을 기반으로 Java 메소드에 매핑할 수 있게 해준다.
HTTP 메소드를 지정하지 않으면 모든 HTTP 메소드를 처리할 수 있다.
예를 들어, **@RequestMapping("/home")
**는 "/home" URL에 대한 모든 요청을 처리하도록 설정한다.
@RequestMapping(value = "/example", method = RequestMethod.GET)
public String getExample() {
return "GET Example";
}
@GetMapping
**@GetMapping
**은 Spring 4.3부터 도입된 어노테이션으로 **@RequestMapping
**의 특별한 케이스로, GET 요청에만 반응한다. **@GetMapping("/example")
**은 "/example" URL에 대한 GET 요청만 처리하도록 설정한다. **@RequestMapping
**을 사용하는 것보다 가독성이 높아 코드의 목적을 더 쉽게 이해할 수 있다.
@GetMapping("/example")
public String getExample() {
return "GET Example";
}
@PostMapping
이 또한 Spring 4.3부터 도입된 **@RequestMapping
**의 특별한 케이스로, POST 요청에만 반응한다. **@PostMapping("/example")
**는 "/example" URL에 대한 POST 요청만 처리하도록 설정한다.
@PostMapping("/example")
public String postExample() {
return "POST Example";
}
요약하자면,
@GetMapping
,@PostMapping
등은 **@RequestMapping
**의 확장된 형태로, 특정 HTTP 메소드(GET, POST 등)에 대한 요청을 처리하는 메소드에 적용하려는 경우 사용한다. 이러한 방식은 코드의 가독성을 높이며, 메소드의 목적을 더 명확하게 표현한다. **@RequestMapping
**은 보다 범용적인 사용성을 가지며, HTTP 메소드에 대해 특별히 지정하지 않거나, 여러 HTTP 메소드를 처리해야하는 경우에 사용된다.
<aside> 3️⃣ 그럼 왜 요즘은 @RequestMapping보단 @GetMapping같은 방식을 사용할까?
</aside>
@RequestMapping
**와 @GetMapping
혹은 **@PostMapping
**과 같은 어노테이션들은 기능적으로 볼 때 동일한 역할을 수행한다. 모두 HTTP 요청을 Controller의 메소드와 매핑하는 역할을 한다.@GetMapping
, @PostMapping
등을 더 많이 사용할까?
@GetMapping
**이나 **@PostMapping
**과 같은 어노테이션을 사용하면, 코드를 읽는 사람이 해당 메소드가 어떤 HTTP 메소드를 처리하는지 더욱 명확하게 알 수 있다.
예를 들어, @RequestMapping(value="/example", method=RequestMethod.GET)
대신 **@GetMapping("/example")
**을 사용하면, 이 메소드가 GET 요청을 처리함을 더욱 명확하게 이해할 수 있다.@GetMapping
**이나 **@PostMapping
**과 같은 어노테이션을 사용하면, 해당 메소드가 정확히 어떤 HTTP 메소드를 다루는지 명시적으로 표현됩니다. 이는 코드의 명확성을 높이며, 이로 인해 코드의 유지보수성이 향상될 수 있다.@RequestMapping
**과 @GetMapping
, @PostMapping
등을 사용하는 기능적인 차이는 없지만, 코드의 가독성과 명확성, 유지보수성을 향상시키는 측면에서 @GetMapping
, @PostMapping
등을 더 선호하는 경향이 있다.