MVC 패턴을 사용하기 위해서 여러가지 복잡한 과정들을 거친다.
컨트롤러를 이용해 모델에 데이터를 담아서 뷰로 전달하는 일련의 과정은 여러가지 방식으로 구현될 수 있다.
어떤 프레임워크를 사용하고 어떤 방식으로 사용할지에 따라서 다르게 구현할 수 있지만 현재 스프링 프레임워크를 사용하는 실무에서는 99.9% @RequestMapping 방식의 컨트롤러를 사용한다.
@RequestMapping 은 애노테이션 기반의 컨트롤러를 지원하는 핸들러 매핑과 어댑터이다.
(RequestMappingHandlerMapping, RequestMappingHandlerAdapter)
@Controller:
스프링이 자동으로 스프링 빈에 등록한다. (내부에 @Component 애노테이션이 존재)
스프링 MVC에서 애노테이션 기반 컨트롤러로 인식
@RequestMapping:요청 정보를 매핑한다. 해당 URL이 호출되면 이 메서드가 호출된다
애노테이션을 기반으로 동작하기 때문에 메서드의 이름은 임의로 설정.
RequestMappingHandlerMapping 은 스프링 빈 중에서 @RequestMapping 또는 @Controller 가 클래스 레벨에 붙어 있는 경우에 매핑 정보로 인식을 한다. (두가지 [Component], [RequestMapping]을 다 포함하고 있는 것이 @Controller 애노테이션)
모든 요청들은 RequestMapping으로 요청할 수 있지만 GetMapping, PostMapping을 통해서 상황에 맞게 호출하는것이 더 좋은 방법이다.
@RequestMapping(method = RequestMethod.GET) -> @GetMapping
이런 방식으로 사용하는것이 바람직하다.