728x90
반응형
스프링 부트는 웹 서버가 아니다
내장 서블릿 컨테이너, 스프링 프레임워크를 쉽게 사용할 수 있게 하는 Tool
서버는 Tomcat
, Jetty
, Undertow
와 같은 것
Tomcat 만들기
순서
- Tomcat 객체 생성
- Port 설정
- Tomcat에 Context 추가
- Servlet 생성
- Tomcat에 Servlet 추가
- Context에 Servlet 매핑
- Tomcat 실행 및 대기
예시
// Application.java
public class Application {
public static void main(String[] args) throws LifecycleException, IOException {
// Tomcat 객체 생성
Tomcat tomcat = new Tomcat();
// Tomcat 포트 설정
tomcat.setPort(8080);
// Windows 환경에서는 docBase 오류로 인해 Directory 생성 과정 필요
// Windows Error fix
String docBase = Files.createTempDirectory("tomcat-basedir").toString();
// Tomcat에 Context 추가
Context context = tomcat.addContext("/", docBase);
// Servlet 생성
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에 Servlet 추가
tomcat.addServlet("/", servletName, servlet);
// Context에 Servlet 매핑
context.addServletMappingDecoded("/hello", servletName);
// Tomcat 실행 및 대기
tomcat.start();
tomcat.getServer().await();
}
}
결과
위 작성한 코드와 같은 설정이 어디에 있길래 스프링 부트가 서블릿 컨테이너를 띄워주는가?
AutoConfigure
와 관련이 있다.- 내장 서블릿 컨테이너도 자동설정의 일부이다.
ServletWebServerFactoryAutoConfiguration
- 서블릿 웹 서버를 설정하는 자동설정
- 해당 클래스 내
TomcatServletWebServerFactoryCustomizer
를 이용해 서버 커스터마이징 가능
DispatcherServletAutoConfiguration
- 서블릿을 만들고 서블릿 컨테이너에 등록하는 역할
728x90
반응형
'Dev > Spring Boot' 카테고리의 다른 글
[스프링 부트 개념과 활용] 내장 웹 서버 응용 2부 (0) | 2020.08.19 |
---|---|
[스프링 부트 개념과 활용] 내장 웹 서버 응용 1부 (0) | 2020.08.19 |
[스프링 부트 개념과 활용] 자동 설정 만들기 2부 (0) | 2020.08.19 |
[스프링 부트 개념과 활용] 자동 설정 만들기 1부 (0) | 2020.08.18 |
[스프링 부트 개념과 활용] 자동 설정 이해 (0) | 2020.08.18 |
댓글