-
내장 웹 서버 이해백기선(인프런 강의)/스프링 부트 개념과 활용 2020. 4. 7. 08:45반응형
스프링 부트는 스프링을 편리하게 사용하는 기능을 제공하는 것이지 스프링 부트 자체는 서버가 아니다.
아래의 코드는 내장 tomcat를 구현해서 만드는 코드이다.
public class Application { public static void main(String[] args) throws LifecycleException { Tomcat tomcat = new Tomcat(); tomcat.setPort(8090); Context context = tomcat.addContext("/", "/"); HttpServlet servlet = new HttpServlet() { @Override protected void doGet(HttpServletRequest req, HttpServletResponse response) throws IOException { PrintWriter writer = response.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.start(); tomcat.getServer().await(); } }
스프링부트에서는 스프링과 다르게 왜 Server를 시작하지 않았는데 서버가 실행되는 이유는 무엇일까?
spring.factories안에있는 설정 중에 아래와같은 설정이 있을 것이다.
org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration,
org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration,
ServletWebServerFactoryAutoConfiguration 은 ServeltWebServer(Servelt Container)에 관한 설정이고,
DispatcherServletAutoConfiguration은 httpServlet을 상속하고 만든 DispatcherServelt을 생성하고 Servelt Container에 등록한다.
왜 두개의 설정을 따로 잡아준 이유가 Servelt Container는 변할 수 있으나, Servelt은 변하지않기 때문에 따로 두었다.
결국 spring boot는 자동설정에 의해서 tomcat(Servelt Contatiner)이 만들어진다.
반응형'백기선(인프런 강의) > 스프링 부트 개념과 활용' 카테고리의 다른 글
독립적으로 실행 가능한 JAR (0) 2020.04.09 내장 웹서버 응용 - 컨테이너와 포트 (0) 2020.04.08 자동설정 만들기 (0) 2020.04.06 스프링 부트 원리 - 자동설정 이해 (0) 2020.04.06 스프링 부트 개념과 활용 (0) 2020.04.02