스트링 부트는 서버가 아닙니다.
가끔 스프링 부트가 구동 시에 서버를 함께 구동시켜주니 서버로 생각하는 사람이 있지만
public static void main(String[] args) {
SpringApplication springApplication = new SpringApplication(SpringbootgettingstartedApplication.class);
springApplication.setWebApplicationType(WebApplicationType.NONE);
springApplication.run(args);
}
위의 코드를 보면 서버를 끄고도 잘 동작하는 것을 볼 수 있다.
스프링은 단지 Tool이다. (내장 서블릿 컨테이너를 잘 사용하게 도와주는)
서버는 tomcat. jetty, undertow... 등등이다.
기본적으로 SpringBoot 프로젝트를 만들면 아래와 같이 tomcat이 들어온다.
자바로 톰캣 구현
톰캣 인스턴스 선언, 포트 설정 및 context 설정 및 톰캣 실행
public static void main(String[] args) throws LifecycleException {
Tomcat tomcat = new Tomcat();
tomcat.setPort(8080);
Context context = tomcat.addContext("/", "/");
tomcat.start();
}
서블릿 작성 후 mapping
Tomcat tomcat = new Tomcat();
tomcat.setPort(8080);
Context context = tomcat.addContext("","/");
/*서블릿 작성*/
HttpServlet servlet = new HttpServlet() {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("doGet");
}
};
tomcat.addServlet("", "servlet", servlet);
context.addServletMappingDecoded("/hello", "servlet");
/*서블릿 작성*/
tomcat.getConnector();
tomcat.start();
https://jwdeveloper.tistory.com/103?category=835408
이러한 설정이 어디 있길래 스프링 부트가 서블릿 컨테이너를 띄어주는 것인가?
톰캣 생성
클래스를 아래와 같이 타고 타고 타고 가보면
서블릿 생성
DispatcherServletAutoConfiguration
DispatcherServlet에 대한 자세한 과정은 아래 링크를 통해 참고
https://jwdeveloper.tistory.com/106?category=835408
정리
톰캣 객체 생성
- 포트 설정
- 톰캣에 콘텍스트 추가
- 서블릿 만들기
- 톰캣에 서블릿 추가
- 콘텍스트에 서블릿 맵핑
- 톰캣 실행 및 대기
- - 이 모든 과정을 보다 상세히 또 유연하고 설정하고 실행해주는 게 바로 스프링 부트의 자동 설정.
ServletWebServerFactoryAutoConfiguration (서블릿 웹 서버 생성)
- TomcatServletWebServerFactoryCustomizer (서버 커스터마이징)
DispatcherServletAutoConfiguration
- 서블릿 만들고 등록
코드 참조
https://github.com/mike6321/Spring/tree/master/SpringBoot/webServer
'Spring > Spring Boot' 카테고리의 다른 글
(SpringBoot) 내장 웹 서버(1) - 컨테이너와 포트 (0) | 2020.01.13 |
---|---|
(SpringBoot) Spring Boot의 자동설정 구현해보기(2) (0) | 2020.01.13 |
(SpringBoot) Spring Boot의 자동설정 구현해보기(1) (0) | 2020.01.13 |
(SpringBoot) SpringBoot 자동설정 (0) | 2020.01.12 |
(SpringBoot) SpringBoot 의존성 관리 (0) | 2020.01.12 |