AnnotatedControllers
1. Annotated Controllers
- Spring MVC는 @Controller와 @RestController 컴포넌트가 요청 매핑, 요청 입력, 예외 처리 등을 표현하기 위해 어노테이션을 사용하는 어노테이션 기반 프로그래밍 모델을 제공합니다.
- 어노테이션이 적용된 컨트롤러는 유연한 메소드 시그니처를 가지며 기본 클래스를 확장하거나 특정 인터페이스를 구현할 필요 가 없습니다.
- 다음 예제는 어노테이션으로 정의된 컨트롤러를 보여줍니다.
@Controller
public class HelloController {
@GetMapping("/hello")
public String handle(Model model) {
model.addAttribute("message", "Hello World!");
return "index";
}
}
- 위 예제에서 컨트롤러의 메서드는 유연한 메서드 시그니처를 가질 수 있습니다.
- 특별히 정해진 패턴이 없습니다.
- 특정 클래스를 확장하거나 인터페이스를 구현하지 않습니다.
- 위 예제에서 메소드는 Model을 매개변수로 받고 String 형태의 뷰 이름을 반환하지만, 이 외에도 많은 다른 옵션이 존재하며 뒷부분에서 설명됩니다.
2. Request Mapping
- @RequestMapping 어노테이션을 사용하여 컨트롤러 메소드에 요청을 매핑할 수 있습니다.
- 이 어노테이션은 URL, HTTP 메소드, 요청 파라미터, 헤더 및 미디어 타입으로 매칭하기 위한 다양한 속성을 가지고 있습니다.
- 클래스 레벨에서 공유 매핑을 표현하거나 메소드 레벨에서 특정 엔드포인트 매핑으로 좁히기 위해 사용할 수 있습니다.
- HTTP 메소드에 특화된 @RequestMapping의 단축 변형들이 있습니다:
- @GetMapping
- @PostMapping
- @PutMapping
- @DeleteMapping
- @PatchMapping
- 왜냐하면, 대부분의 컨트롤러 메소드는 기본적으로 모든 HTTP 메소드와 일치하는 @RequestMapping을 사용하는 것보다 특정 HTTP 메소드에 매핑되어야 하기 때문입니다.
- 공유 매핑을 표현하기 위해서는 여전히 클래스 레벨에서 @RequestMapping이 필요합니다.