Spring

@WebServlet, @Controller 의 차이

curiousKidd 2022. 6. 1. 23:50
반응형

@WebServlet

javax.servlet.annotation
@Target(value=TYPE)  
@Retention(value=RUNTIME)  
@Documented  
public @interface WebServlet
  • 서블릿을 선언할 때 사용되는 Annotation
  • 이 Annotation이 표시된 클래스는 Servlet Container에 의해 처리된다.
    • 속성 값을 통해 해당 Servlet과 매핑될 URL 패턴을 지정한다.

@Controller

org.springframework.stereotype
@Target(value=TYPE)  
@Retention(value=RUNTIME)  
@Documented  
@Component  
public @interface Controller
  • 이 Annotation이 표시된 클래스는 “Controller” 임을 나타낸다.
  • @Controller는 @Component의 구체화된 역할을 한다.
    • classpath scanning을 통해 구현 클래스를 자동으로 감지할 수 있도록 해준다.
  • 일반적으로 RequestMapping 어노테이션을 기반으로 한 handler method와 함께 사용한다.

@WebServlet과 @Controller Annotation의 차이

WebServlet과 Spring MVC Controller는 같은 일을 하는 데 사용된다.

Java Servlet의 @WebServlet

  • 서블릿은 J2EE 프레임워크의 일부이며 모든 Java 애플리케이션 서버(Tomcat, Jetty 등)는 서블릿을 실행하기 위해 빌드된다.
  • 서블릿은 J2EE 스택의 “하위 레벨” 계층이다. 즉, 애플리케이션 서버와 함께 미리 패키징되어 있기 때문에 애플리케이션을 실행하기 위해 servlet.jar가 필요하지 않다.
  • 성능상의 이유로, 여러 편의를 제공하는 무거운 Spring MVC보다 Java Servlet을 사용하는 것이 유리할 때도 있다.

Spring MVC의 @Controller

  • Spring MVC
    • Java 웹 애플리케이션을 구현하는 대부분의 사람들은 서블릿 위에 구축된 일종의 프레임워크를 사용하여 개발을 더 쉽게 만든다. Spring MVC는 서블릿 위에 구축된 프레임워크 중 하나이다.
    • Java 웹 애플리케이션을 구현하는 데 있어서 더 많은 편의를 제공한다.
      • (binary form management, form parameter to bean conversion, parameter validation 등)
      • Spring MVC는 form 매개변수와 controller method 매개변수 매핑, binary form 제출(form이 파일을 업로드할 수 있는 경우)에서의 더 쉬운 처리 등과 같은 보다 기본적인 기능들을 제공한다.
    • 하나의 클래스에서 여러 URL과 메소드의 입력을 쉽게 관리 할 수 ​​있다.
      • 서블릿에서 동일한 작업을 수행할 수는 있지만 코드가 더 복잡하고 읽기 어렵다.
  • Spring MVC의 Controller
    • 일을 더 쉽게하기 위해 서블릿 위에 구축된 라이브러리이다.
    • 기본적으로 Spring MVC에서의 모든 요청은 DispatcherServlet에 매핑된다.
      • 그런 다음 DispatcherServlet은 어노테이션이 들어오는 요청과 일치하는 컨트롤러를 호출한다.
      • 매핑과 관련된 정보는 web.xml에 작성하거나 해당 서블릿에 @Controller Annotation을 달 수 있다.
    • Spring MVC의 Controller를 실행하기 위해서는 애플리케이션에 필요한 jar를 패키징해야 한다.
반응형