-
내장 웹 서버 이해Spring/Spring Boot 2020. 5. 2. 23:53
스프링 부트의 main 메서드에서 Application.run을 하면 웹 서버가 뜨는 것은 스프링 부트를 경험해 봤다면
알고 있을 것이다. 그러면 스프링 부트 자체가 웹 서버일까? 아니다.
스프링 부트는 내장 서블릿 컨테이너를 쉽게 사용하게 해 주고 스프링 프레임워크를 쉽게 사용하게 해주
는하나의 툴이다.
그리고 이 서블릿 컨테이너라 불리는 톰캣, 제티, 언더토 등이 웹 서버이다. 그리고 이 서블릿 컨테이너들은 자바 코드
로 서버를 만드는 기능을 제공한다.
기본적으로 스프링 부트 App을 만들면 톰캣이 들어와있다. 그러면 어떻게 스프링 부트가 톰캣을 띄어줄 수 있는 걸까?
이는 스프링 부트의 자동설정과 관련이 있다. 톰캣, 서블릿 등이 자동 설정으로 등록이 되기 때문에
스프링 부트 App을 실행하면 톰캣이 만들어지고 서블릿이 추가가되는 등 App이 잘 뜨게 되는 것이다.
즉 내장 서블릿 컨테이너 역시 자동설정의 일부로 뜨는 것.
ServletWebServerFactoryAutoConfiguration.class 이렇게 서블릿 컨테이너를 자동으로 띄우고 커스터마이징 하였다면 서블릿은 어디서 등록할까?
서블릿 기반의 mvc는 디스패처 서블릿이 필요하게 되는데 어디있는지 살펴보자.
DisPatcherServletAutoConfigure.class 이렇게 코드로 디스패처 서블릿을 만드는 것을 알고있다. 서블릿 컨테이너는 다 달라질 수 있지만 서블릿은 변하지 않기
때문에 분리가 되있는데 디스패처 서블릿은 어떠한 서블릿 컨테이너를 쓰던 상관없이 만든 후 지금 있는 서블릿 컨테
이너에 등록만 하는 과정이기 때문이다.
'Spring > Spring Boot' 카테고리의 다른 글
RestTemplate, WebClient (0) 2020.07.13 JSR-303 Errors들을 Json으로 Serialization 해보자 (0) 2020.06.25 스프링 부트 MySQL8 연동 Intellij (0) 2020.06.23 application.properties 등의 외부 설정 (0) 2020.06.13 내장 서블릿 컨테이너 응용 해보기 (0) 2020.05.14