입사 후 사내에서 자체적으로 개발한 웹 서버가 있었다. 어떤 구조인지 살펴보니 Spring 프레임워크 였던 것이다. 나는 Java
기반의 프레임워크는 Spring
이 아니라 Spring Boot
를 접했기에 조금 다른 부분이 있었다.
그리고 스프링하면 꼭 빠질 수 없는 친구인 톰캣에 대해 명확히 아는 바가 없기에 이번 기회에 확실히 짚어보려고 한다.
🤷♂️ : 그래서 톰캣이 뭔데요?
톰캣은 Apache Software Foundation에서 개발 및 유지보수하는 오픈 소스 웹 서버 및 서블릿 컨테이너이다.
몇가지 주요 기능으로는 다음과 같다.
💡 여기서 서블릿 컨테이너란?
Java 언어로 작성된 웹 애플리케이션의 구성 요소 중 하나로, 동적 웹 페이지를 생성하고 처리하는 Java 프로그램이다.
웹 개발하면 빠질 수 없는 친구다.
Java
의 영원한 친구이며 한국에서도 전자정부 표준 프레임워크로 선정되어 매우 친숙한 친구이다.
스프링은 Java 기반의 애플리케이션 개발을 위한 오픈 소스 프레임워크이다.
웹 개발에 도움되는 의존성 및 여러가지 편의 기능들을 제공하여 보다 용이한 개발이 가능하도록 도와주는 프레임워크이다.
그럼 두 친구의 관계는 뭘까?
스프링 웹 애플리케이션을 개발한 후 WAR(웹 애플리케이션 아카이브) 파일로 패키징하고 이를 톰캣에 배포할 수 있다.
스프링 웹 애플리케이션은 주로 DispatcherServlet
이라는 스프링의 서블릿을 사용하여 요청을 처리한다. DispatcherServlet
은 애플리케이션 내의 컨트롤러와 다른 구성 요소들을 관리하고, HTTP 요청을 적절한 핸들러로 라우팅하여 처리한다.
톰캣은 스프링 애플리케이션의 컨텍스트(ApplicationContext)를 초기화하고 스프링 빈(bean)을 관리하는 역할을 한다. 스프링은 런타임 중에 빈을 생성하고 관리하며, 스프링의 종속성 주입(DI)을 사용하여 빈 간의 의존성을 해결한다.
스프링은 트랜잭션 관리를 위한 다양한 방식을 제공하며, 이를 통해 데이터베이스 트랜잭션 등을 쉽게 처리할 수 있다. 톰캣과 스프링을 함께 사용하면 트랜잭션 관리가 원활하게 이루어진다.
결과적으로 톰캣은 스프링으로 만들어진 웹 구성 요소들을 서블릿 컨테이너를 통해 배포한다고 볼 수 있다.
Spring
→ 실행 → Tomcat
→ 컨테이너 처리
→ 배포
이러한 과정이라고 생각함.
💡 참고