성장에 목마른 코린이

[Spring Boot] Servlet 생명주기 (16 - 19) 본문

Java/Spring Boot

[Spring Boot] Servlet 생명주기 (16 - 19)

성장하는 코린이 2022. 11. 2. 11:58
728x90

Servlet은 자신만의 생명주기(life cycle)를 가지고 있고,

웹 애플리케이션 컨테이너에서 컨텍스트가 초기화되면 생명주기가 시작됩니다.

 

Servlet의 생명주기는 초기화(initialize), 서비스(service), 소멸(destroy) 3단계로 구성되어 있습니다.

  • 초기화 - load한 Servlet의 인스턴스를 생성하고 리소스를 load하는 클래스 생성자의 초기화 작업과 동일한 역할을 수행합니다.
  • 서비스 - 클라이언트의 요청에 따라서 호출합니다.
  • 소멸 - Servlet이 unload됩니다.
    • unload는 런타임 오류나 서블릿 컨테이너가 종료되었을 때 발생하는데
    • 이때 서블릿이 unload되어 서블릿의 메서드 호출 결과가 정상적으로 표출되지 않습니다.

서블릿 초기화와 init 메서드

init 메서드는 이름처럼 초기화를 담당하는 역할을 수행하는 메서드입니다.

package info.thecodinglive.basic;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;

@WebServlet("/init")
public class InitServlet extends HttpServlet{
	@Override
    public void init() throws ServletException {
    	System.out.println("init call");
    }
}

HttpServlet은 abstract class인데 일반적으로 Servlet을 만들 때는 예제와 같이 HttpServlet을 상속받아서 만듭니다.

init 메서드는 초기화에 대응되는 메서드이므로 한번만 호출이 됩니다.

gradlew appStartWar로 실행할 수 있는데,

실행한뒤 브라우저에서 http://localhost:8080/init을 입력한 뒤 콘솔 창을 확인하면

init call 이 출력되는걸 확인할 수 있습니다.

 

gradlew는 gradle wrapper를 실행하는 명령어로,

gradle을 설치하지 않은 사용자는 gradle 대신 gradlew로 실행할 수 있습니다.

Comments