사용자의 요청이 진입하는 지점을 의미하며,
@Controller 는 주로 사용자의 요청을 처리하고 난 후 정해진 뷰에 객체를 넘겨주는 역할을 한다.
대규모 서비스로 갈수록 처리해야할 서비스들이 많아지는데, 이를 하나의 클래스에서 몰아 처리할 게 아니라 @Controller 어노테이션을 중간 제어자 둠으러써 각 @Controller가 필요한 로직을 처리하기 위한 서비스를 호출하게 된다.
@Controller는 MVC 패턴에 포함되는 것이다.
즉, @Controller의 핵심은 역할분담 이다.
Spring에서 컨트롤러를 지정해주기 위한 어노테이션은 @Controller와 @RestController가 있다.
주요한 차이점은 "HTTP Response Body가 생성되는 방식" 이다.
즉, @RestController는 웹 서비스에서 사용되는 특수 컨트롤러이며 @Conroller + @Response와 같다.