
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()를 호출하여 톰캣 서버를 시작하고 서블릿을 등록한 대로 요청을 처리