지난번에 @Controller 에 대해 정리하였다.

이번엔 @Controller의 단짝과도 같은 @RequestMapping 에 대해 정리한다.

 

@RequestMapping 은 URL을 컨트롤러의 메소드와 매핑하는 용도로 사용한다.

즉, 사용자가 어떤 사이트로 이동하기 위해 URL을 입력하여 이동하기를 요청한다면

@Controller가 요청을 받아 URL과 맞는 @RequstMapping을 찾아 준다.

 

@RequestMapping은 @Controller에서 받은 요청을 받기 위해 다양한 속성을 클래스 또는 메소드 단위로

지정해 줄 수 있다.

 

*속성

value
String[]
요청으로 들어온 URL Path값으로 매핑
method
RequestMethod[]
HTTP Request 메소드 값을 매핑 조건으로 부여
GET, POST, HEAD, PUT, DELETE 등등 (ENUM으로 정의)
params
String
HTTP Request 파라미터를 매핑 조건으로 부여

 

 

* value

URL 패턴을 지정한다.

문자열 배열로 구성되어 여러개의 경로를 지정할 수도 있다.

@RequestMapping(value = "/path")   // 가장 일반적인 쓰임새
@RequestMapping(value = "/path/**/DetailPath")  // **을 붙여주는 등 URL 패턴을 지정 가능
@RequestMapping(value = "/path1", "/path2")  // String 배열로 여러 경로를 처리 가능
@RequestMapping(value = "/path/{ID}")  // {}를 통해 컨트롤러에서 ID를 파라미터로 전달받음.
 

 

* method

HTTP Request 메소드를 정의한 ENUM으로 URL을 처리할 방법을 Method를 통해 각 메소드에 매핑이 된다.

즉, 동일한 URL이라도 정해준 메소드에 따라 처리할 메소드를 지정할 수 있다.

@RequestMapping(value = "/path/pathdetail", method = RequestMethod.GET)
public void method1(){}
@RequestMapping(value = "/path/pathdetail", method = RequestMethod.POST)
public void method2(){}
 

만약 URL이 GET방으로 지정되었다면 method1() 에서 요청이 처리되며 POST라면 method2에서 처리된다.

 

* params

URL에 파라미터로 값을 받는 경우 값에 따라서 매핑될 메소드를 지정할 수 있다.

@RequestMapping(value = "/path", params = "flag = true")
@RequestMapping(value = "/path", params = "flag = false")
 

이렇게 하면 URL에 전해준 flag 값에 따라 어떤 메소드에서 처리할지 정해줄 수 있다.

 

* 클래스에 붙인 @requestMapping

@RequestMappin은 클래스에도 붙여줄 수 있다.

@Controller
@RequestMapping(value = "/path")    // /path/**/ 
public class testClass {
     @RequestMapping(value = "/detailPath1")    // /path/dtailPath1
     public void testMethod1() {
    
   }

     @RequestMapping(value = "/detailPath2")    // /path/detailPath2
     public void testMethod2() {
    
   }
}
 

만약 요청된 URL 경로가 /path/detailPath1 로 들어오게 된다면 /path 를 매핑해준 testClass 에 들어오고

그 뒤의 경로가 detailPath1 이므로 testMethod에서 처리할 수 있다.

즉, Class 선언에 @RequestMapping 으로 적어준 경로를 공통으로 사용하며 그 뒤의 경로는 메소드에서

처리하는 것으로 매핑할 수 있다.

 

 

@RequestMapping 은 이 외에도 상속, 제네릭 등등으로 다양하게 사용하는 방법이 있다. (참고 블로그)

핵심적인 내용은 [ @RequstMapping 은 URL 이 들어왔을때 그 경로에 따라 어떻게 처리될 것인가를 지정해주는 것이다.] 라는 것을 기억하자.

 

 

# 참고 블로그

 

- 기본적인 사용방법

https://woolbro.tistory.com/43

 

- 기본 + 상속, 제네릭 등 응용해서 사용하는 방법

https://joont92.github.io/spring/@RequestMapping/

[spring] @RequestMapping

@RequestMapping은 DefaultAnnotationHandlerMapping에서 컨트롤러를 선택할 때 대표적으로 사용하는 애노테이션이다. url당 하나의 컨트롤러에 매핑되던 다른 핸들러 매핑과 달리 메서드 단위까지 세분화하여 적용할 수 있으며, url 뿐 아니라 파라미터, 헤더 등 더욱 넓은 범위를 적용할 수 있다. 속성 DefaultAnno

joont92.github.io

 

 

'SPRING FRAMEWORK > ANNOTATION' 카테고리의 다른 글

Lombok 어노테이션 정리  (0) 2022.08.29
@Controller  (0) 2022.08.29
@Component  (0) 2022.08.29
@Bean  (0) 2022.08.28
Annotation / Meta-Data  (0) 2022.08.28

+ Recent posts