
내장 웹 서버 이해
내장 서버를 스프링 부트 없이 만들어 보기
springbootgetttingstarted
public class Application {     public static void main(String[] args) throws LifecycleException {                  Tomcat tomcat = new Tomcat();         tomcat.setPort(8888);
          Context context = tomcat.addContext("/", "/");
                   HttpServlet servlet = new HttpServlet(){             @Override                          protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {                                                   PrintWriter writer = resp.getWriter();                 writer.println("<html><head><title>");                 writer.println("Hey, Tomcat");                 writer.println("</title></head>");                 writer.println("<body><h1>Hello Tomcat</h1></body>");                 writer.println("</html>");             }         };
          String servletName = "helloServlet";                  tomcat.addServlet("/", servletName, servlet);                  context.addServletMappingDecoded("/hello", servletName);         tomcat.getConnector();         tomcat.start();         tomcat.getServer().await();     } }
 
  | 
 
tomcat9부터는 tomcat.start()를 하기 전에 tomcat.getConnector()를 해야 실행이 된다.
- tomcat 객체를 생성
 
- servlet 객체를 생성했다.
 
결과

스프링 부트에서는 위와 같은 설정을 AutoConfiguration에서 자동으로 잡아준다.
spring-boot-autoconfigure/spring.factories
ServletWebServerFactoryAutoConfiguration는 서블릿 웹 서버를 설정해주는 자동 설정이다.
TomcatServletWebServerFactoryCustomizer을 통해 톰켓을 커스터 마이징 한다.