서블릿은 톰캣 같은 웹 애플리케이션 서버를 직접 설치하고, 그 위에 서블릿 코드를 클래스 파일로 빌드해서 올린 다음, 톰캣 서버를 실행하면 된다. 하지만 이 과정은 매우 번거롭다. 스프링 부트는 톰캣 서버를 내장하고 있으므로, 톰캣 서버 설치없이 편리하게 서블릿 코드를 실행할 수 있다. 따라서 스프링 부트 환경에서 서블릿 코드를 등록하고 사용해보자. 스프링 부트 서블릿 환경 구성 @ServletComponentScan 스프링 부트는 서블릿을 직접 등록해서 사용할 수 있도록 @ServletComponentScan을 지원한다. 이를 사용하면, 스프링이 자동으로 현재 패키지를 포함하여 하위 패키지를 탐색해 모든 서블릿을 찾아 자동으로 등록하고 실행할 수 있도록 도와준다. 서블릿 등록 실제로 동작하는 서블릿 코..
멀티 스레드에 대한 기본 개념부터 확인해보자. 다음은 웹 브라우저(클라이언트)에서 요청을 하는 상황이다. 이렇게 클라이언트의 요청이 있으면 WAS(서버)는 요청에 대한 응답을 할 것이다. 이를 위해서는 먼저 TCP/IP 연결이 이루어지고 WAS는 서블릿을 호출한다. 이 서블릿 객체는 누가 호출할까? 바로 스레드가 호출한다. 스레드는 애플리케이션 코드를 하나하나 순차적으로 실행하는 것을 말한다. 자바 메인 메서드를 처음 실행하면 main이라는 이름의 스레드가 실행된다. 만약 스레드가 없다면 자바 애플리케이션의 실행이 불가능하다. 스레드는 한 번에 하나의 코드 라인만 수행한다. 따라서 동시 처리가 필요하다면 스레드를 추가로 생성해야 한다. 스레드가 단 한 개만 있다고 가정해보자. 클라이언트의 요청이 들어오면..
서블릿에 대하여 알아보자. 위의 그림은 웹 애플리케이션 서버를 직접 구현할 때 해야 하는 것들이다. 사실 위에서 초록색으로 표시되어 있는 부분만이 제일 의미 있는 로직이다. 비즈니스 로직은 회원 데이터를 받고 데이터베이스에 저장 요청을 하는 것이 전부이다. 하지만, 그 전과 후 단계가 너무 많고 복잡하다. 그렇다면 모든 개발자가 이를 항상 매번 구현해야 할까? 그래서 나온 것이 "서블릿"이다. 서블릿은 위의 초록색 부분을 제외한 모든 기능을 지원해준다. 더 정확하게 말하면, 서블릿을 지원하는 WAS가 이 기능들을 지원해주는 것이다. 간단하게 보면 서블릿은 아래와 같이 생겼다. @WebServlet(name = "HelloServlet", urlPatterns = "/hello") public class ..