@Controller
특징
- 클래스 수준 어노테이션
- 일반적으로 Spring Web MVC 애플리케이션에서 HTTP 요청을 처리하는 클래스에 사용
- @Component을 확장한 어노테이션
- 컴포넌트 스캔이 활성화되면 이를 감지하여 빈으로 자동 등록
- Request Mapping 정의
- @RequestMapping, @GetMapping, @PostMapping 및 기타 HTTP 관련 어노테이션으로 정의된 메서드를 통해 사용
장점
- 컨트롤러는 Spring이 컨트롤러 빈의 수명 주기를 자동으로 관리할 수 있도록 하여 개발 프로세스를 간소화합니다.
- 컨트롤러 레이어와 다른 애플리케이션 레이어 간의 문제를 명확하게 분리하여 모듈화되고 유지 관리 가능한 코드를 촉진합니다.
- 데이터 바인딩, 유효성 검사 및 예외 처리와 같은 다른 Spring MVC 기능과 쉽게 통합할 수 있습니다.
사용법
- @Controller 선언
- HTTP 요청을 처리하는 클래스에 @Controller 어노테이션 부착
- 컴포넌트 스캔 활성화
- 애플리케이션 구성에서 컴포넌트 스캔 활성화
- 컨트롤러 빈 자동 감지 및 등록 가능
- 예시코드
- @Configuration @ComponentScan("org.example.web") public class WebConfig { // ... }
- Request Mapping
- 구체적인 request type을 처리하기 위해 적절한 HTTP 관련 어노테이션을 사용하여 메서드 정의
- @GetMapping, @PostMapping
- 메서드 파라미터
- request data를 컨트롤러 메서드에 바인딩하기위해 메서드 파라미터 사용
- @RequestParam, @PathVariable, @RequestBody
- Return Value
- 애플리케이션 요구 사항에 따라 컨트롤러 메서드에서 적절한 Return Value 반환
- String(View 이름), ModelAndView, ResponseEntity
- 예외 처리
- 컨트롤러 내에서 @ExceptionHandler 메서드 사용
- 전역 예외 처리를 위해 @ControllerAdvice 적용
@Controller vs @RestController
참고자료
'Develop > Spring' 카테고리의 다른 글
[Spring Web MVC] Handler Methods - MethodArgument (0) | 2023.04.17 |
---|---|
[Spring Web MVC] Request Mapping - consumes, produces (0) | 2023.04.17 |
[Spring Web MVC] Request Mapping - Parameters, headers (0) | 2023.04.17 |
[Spring Web MVC] Request Mapping - URI patterns (0) | 2023.04.17 |
[Spring Web MVC] Request Mapping (0) | 2023.04.17 |