ServerFactory.getWebServer(ServletContextInitializer
타입의 파라미터)
ServletContextInitializer
: 서블릿 컨테이너에 서블릿을 등록하는데 필요한 작업을 수행하는 인터페이스public class HellobootApplication {
public static void main(String[] args) {
ServletWebServerFactory serverFactory = new TomcatServletWebServerFactory();
WebServer webServer = serverFactory.getWebServer(servletContext -> {
servletContext.addServlet("hello", new HttpServlet() {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setStatus(200);
resp.setHeader("Content-Type", "text/plain");
resp.getWriter().println("Hello Servlet");
}
}).addMapping("/hello");
}); // 웹서버 생성
webServer.start(); // Tomcat Servelet Container 동작
}
}
ServletWebServerFactory
인터페이스는 서블릿 컨테이너(예: Tomcat, Jetty 등)를 생성하는 역할TomcatServletWebServerFactory
는 톰캣 서버를 사용하여 WebServer
객체를 생성getWebServer
메서드에 전달된 람다 표현식에 서블릿 컨텍스트를 설정
(익명 클래스를 사용해서 특정 서블릿을 간단하게 정의하고 즉시 등록함)HttpServlet
을 상속받아 구현HttpServlet
클래스를 익명클래스로 넣고 service
메서드를 오버라이드하여 HTTP 요청을 처리service
메서드는 HTTP 요청을 처리하며, 응답으로 “Hello Servlet” 메시지를 반환하도록 구현Content-Type
은 text/plain
으로 지정webServer.start()
를 호출하여 톰캣 서버를 시작하고 서블릿을 등록한 대로 요청을 처리