본문 바로가기
Develop/Spring

[Spring Web MVC] @Controller vs @RestController

by 준팍(junpak) 2023. 4. 17.

@Controller

특징

  • 클래스 수준 어노테이션
    • 일반적으로 Spring Web MVC 애플리케이션에서 HTTP 요청을 처리하는 클래스에 사용
  • @Component을 확장한 어노테이션
    • 컴포넌트 스캔이 활성화되면 이를 감지하여 빈으로 자동 등록
  • Request Mapping 정의
    • @RequestMapping, @GetMapping, @PostMapping 및 기타 HTTP 관련 어노테이션으로 정의된 메서드를 통해 사용

장점

  • 컨트롤러는 Spring이 컨트롤러 빈의 수명 주기를 자동으로 관리할 수 있도록 하여 개발 프로세스를 간소화합니다.
  • 컨트롤러 레이어와 다른 애플리케이션 레이어 간의 문제를 명확하게 분리하여 모듈화되고 유지 관리 가능한 코드를 촉진합니다.
  • 데이터 바인딩, 유효성 검사 및 예외 처리와 같은 다른 Spring MVC 기능과 쉽게 통합할 수 있습니다.

사용법

  1. @Controller 선언
    1. HTTP 요청을 처리하는 클래스에 @Controller 어노테이션 부착
  2. 컴포넌트 스캔 활성화
    1. 애플리케이션 구성에서 컴포넌트 스캔 활성화
    2. 컨트롤러 빈 자동 감지 및 등록 가능
    • 예시코드
    • @Configuration @ComponentScan("org.example.web") public class WebConfig { // ... }
  3. Request Mapping
    1. 구체적인 request type을 처리하기 위해 적절한 HTTP 관련 어노테이션을 사용하여 메서드 정의
    2. @GetMapping, @PostMapping
  4. 메서드 파라미터
    1. request data를 컨트롤러 메서드에 바인딩하기위해 메서드 파라미터 사용
    2. @RequestParam, @PathVariable, @RequestBody
  5. Return Value
    1. 애플리케이션 요구 사항에 따라 컨트롤러 메서드에서 적절한 Return Value 반환
    2. String(View 이름), ModelAndView, ResponseEntity
  6. 예외 처리
    1. 컨트롤러 내에서 @ExceptionHandler 메서드 사용
    2. 전역 예외 처리를 위해 @ControllerAdvice 적용

 

@Controller vs @RestController

 


참고자료