BUILD_SSO

[Spring] @RequestMapping과 @GetMapping의 차이 본문

Spring

[Spring] @RequestMapping과 @GetMapping의 차이

sohyeonnn 2023. 6. 29. 16:10

컨트롤러의 메서드에 @RequestMapping을 명시하게 되면 요청에 대해 어떤 컨트롤러, 어떤 메소드가 처리될지를 맵핑하는 어노테이션이다. 그렇다면, @RequestMapping과 @GetMapping(PostMapping, PutMapping, DeleteMapping)의 차이는 무엇일까?

 

일반적으로 컨트롤러의 메서드에 @RequestMapping 어노테이션을 붙이면 해당 URL이 호출될 때 이 메서드가 호출된다. 이 어노테이션을 기반으로 동작하게되므로  HTTP 메서드 별로 호출 메서드의 이름을 임의로 지을 수 있다. 

@Controller
public class BoardController {

    @RequestMapping(value = "/board", method = RequestMethod.GET)
    public String showBoardPage() {
        ...
        return "board";
    }

.../board  URL이 호출되면 showBoardPage 메서드가 호출된다. 

 

한 클래스 안에 중복되는 경로(URL)가 있다면 최상단에 경로를 따로 뺄 수 있다. 

단, @RequestMapping은 Class와 Method에 붙일 수 있고, @GetMapping, @PostMapping, @PutMapping, @DeleteMapping 등은 Method에만 붙일 수 있다.

@Controller
@RequestMapping("/board")
public class BoardController {

    @RequestMapping(method = RequestMethod.GET)
    public String showBoardPage() {
        ...
        return "board";
    }

 

 

 

 

위와 같은 method 옵션을 이용해 GET, POST, PUT, DELETE 방식을 구별하는 것은 번거롭고 귀찮다. 이를 대신해 사용할 수 있는 방식이 바로 @GetMapping, @PostMapping 어노테이션 방식이다.

 

@RequestMapping 대신 역할에 맞는 메소드의 이름을 가진 @GetMapping(PostMapping, PutMapping, DeleteMapping)으로도 사용 가능하다.

@Controller
public class BoardController {

    @GetMapping("/board")
    public String showBoardPage() {
        ...
        return "board";
    }

 

@GetMapping은 구조적으로 @RequestMapping(valaue="", method = RequestMethod.GET)과 같다.

이것을 확인하려면 속칭 어노테이션을 까(?)보면 확인할 수 있는데, @GetMapping의 class 파일을 확인해보면 아래와같이 RequestMethod.GET이 포함되어있는걸 확인할 수 있다.

GetMapping.class

 

PostMapping, PutMapping, DeleteMapping도 마찬가지로 각 역할에 맞는 HTTP Method가 클래스파일 안에 포함되어있다.

그래서 RequestMapping과 GetMapping, PostMapping, PutMapping, DeleteMapping은 같은 역할을 하는것이다.

method = {RequestMethod.POST}

'Spring' 카테고리의 다른 글

[Spring] Maven vs Gradle 의 차이점과 특징  (0) 2023.06.23
Comments