스프링 부트의 Application.java와 ServletInitializer.java
스프링 부트로 웹 애플리케이션을 개발할 때, `Application.java` 파일과 `ServletInitializer.java` 파일은 핵심 역할을 수행합니다. 이 두 파일은 스프링 부트 애플리케이션을 실행하고 외부 서블릿 컨테이너에서 실행할 때의 설정을 정의하는 데 사용됩니다.
1. Application.java : 주 진입점(entry point) 파일
`Application.java` 파일은 스프링 부트 애플리케이션의 주 진입점(entry point)입니다. 이 파일에는 `public static void main(String[] args)` 메서드가 정의되어 있습니다. 이 메서드는 애플리케이션을 실행하기 위한 진입점이며, 여기서 내장된 웹 서버(일반적으로 Tomcat)를 시작하고 스프링 애플리케이션 컨텍스트를 초기화합니다. 스프링 부트 애플리케이션을 실행할 때 이 파일의 `main` 메서드를 호출하여 애플리케이션을 실행합니다.
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
위 예제에서 `@SpringBootApplication` 어노테이션은 스프링 부트 애플리케이션의 구성을 자동화하는 어노테이션입니다.
2. ServletInitializer.java : 외부 서블릿 컨테이너에서 실행할 때 사용되는 파일
`ServletInitializer.java` 파일은 스프링 부트 애플리케이션을 WAR(웹 애플리케이션 아카이브) 파일로 패키징하여 외부 서블릿 컨테이너(예: Apache Tomcat)에서 실행할 때 사용됩니다. 이 파일은 `SpringBootServletInitializer` 클래스를 상속받은 클래스로써 외부 서블릿 컨테이너에서 애플리케이션을 실행할 때 필요한 설정을 제공합니다.
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
}
`SpringBootServletInitializer`를 상속받은 이 클래스는 `configure` 메서드를 오버라이드하여 외부 서블릿 컨테이너에서 애플리케이션을 실행할 때 필요한 설정을 정의합니다. 이 파일을 통해 스프링 부트 애플리케이션을 WAR 파일로 패키징하고 외부 서블릿 컨테이너에서 실행할 수 있게 됩니다.
이렇게 `Application.java`와 `ServletInitializer.java` 파일은 스프링 부트 애플리케이션의 실행과 외부 서블릿 컨테이너에서의 실행을 위한 중요한 역할을 하며, 올바르게 설정되어야 원활한 애플리케이션 배포와 실행이 가능합니다.