[Spring] 요청을 처리하는데 사용되는 @RequestMapping

지니·2025년 6월 28일

Spring

목록 보기
10/13
post-thumbnail

@RequestMapping에 대해서 공부하기 전에는 Spring에서 클라이언트의 요청이 들어왔을 때, 내부적으로 어떻게 처리되고 응답이 보내지는지를 알아야 한다. 그러니, 정확한 과정을 모른다면 그 과정부터 알고 오는 것이 좋다. 밑에 링크는 Spring에서 요청이 어떻게 처리되는지 그 과정을 설명해준다. 그러니 참고하면 좋을 것이다.

[Spring] Spring MVC 패턴

자, 그럼 이제 요청을 처리하는데 사용되는 @RequestMapping 어노테이션이 무엇이고 어떻게 사용하면 되는지 알아보도록 하자.

1. @RequestMapping이란?

@RequestMapping이란 클라이언트의 요청을 처리하는데 사용되는 어노테이션이다. 이를 통해서 어떤 URL이 어떤 메소드에서 처리되는지. 어떤 HTTP 메소드를 처리할지를 정할 수 있다.

✅ Spring의 DispatcherServletController에게 요청을 위임한다. 이 때, 컨트롤러는 핸들러 메소드에 선언된 다양한 @RequestMapping의 설정 내용을 따른다.

이 어노테이션은 메소드 레벨과 클래스 레벨 모두에서 어노테이션을 설정할 수 있다. 이제부터, 각각의 레벨에서 어노테이션을 사용하는 모습을 한 번 살펴보도록 하자.


2. 메소드 Mapping

Spring MVC에서는 @Controller이 붙은 클래스를 자동으로 스캔해서 빈으로 등록한다. 이제, 이 어노테이션이 붙은 클래스에서 웹 요청을 처리하는 것이다.
이제 클라이언트의 요청이 들어오면, @RequestMapping 어노테이션을 이용해 어떤 메소드에게 요청을 처리할지 지정해준다.

2-1. @RequestMapping만 사용하기

(1) @RequestMapping 어노테이션을 설정한다.
(2) 어노테이션 안에 요청 URL을 작성해준다.
(3) http 메소드 방식을 지정해줄 수 있다.

위의 사진처럼 @RequestMapping 어노테이션을 사용할 수 있다.

  • 첫번째에서는 http 메소드 방식을 지정하지 않았다.
    이 때, 메소드 방식을 지정하지 않으면 메소드가 어떻게 들어와도 그 요청을 다 처리한다.

  • 두번째에서는 Get방식으로 메소드 지정했다.
    이 때, 만약 요청을 Get이 아닌 POST방식으로 보내면 405 에러 (허용 되지 않은 메소드로 요청했을 때 발생)가 발생하게 된다.

2-2. http 메소드 전용 어노테이션

Spring 4.3 버전부터는 @RequestMapping을 좀 더 구체화 해 @GetMapping, @PostMapping, @PutMapping, @DeleteMapping, @PatchMapping 등의 어노테이션을 제공한다. 밑에 사진은 각각의 메소드 별로 매칭되는 어노테이션을 보여준다.

위에서 메소드 방식을 지정하는 방법에 관해서 알아봤다. GET 방식을 지정해줬는데, 위에 처럼 작성할 수 있지만 밑에 사진처럼 @GetMapping어노테이션을 이용해 작성할 수 있다.


3. 클래스 Mapping

2-1에서 작성된 url을 확인해보면 둘다 /menu로 시작되는 것을 확인할 수 있다.

🤔 그런데 이렇게 공통으로 작성되는 부분을 다른 곳에 선언하고, 그 뒤에 오는 url만 작성하면 어떨까? 중복된 내용을 작성하지 않아도 되기 때문에 좀 더 편하지 않을까? 그렇다면 어떻게 하면 될까?

✅ 밑에처럼 클래스 레벨에 @RequestMapping을 사용하면 된다.

0개의 댓글