Spring framework는 다양한 기술을 지원하지만 개발자가 처리해야 할 설정들이 너무 많다.
처음 접하는 개발자 입장에서는 부담이 많이 된다.
--> 스프링부트의 등장
스프링부트의 장점?
1) 테스트환경 -JUnit과 같은 테스트 라이브러리가 내장되어있다.
2) application.properties 또는 application.yaml과 같이 xml파일을 대신할 수 있는 설정파일 세팅 가능
3) 설정자동화 - Maven의 기능과 'starter' 컴포넌트들을 이용해 라이브러리 의존성을 훨씬 간단하게 처리할 수 있다.
4) 톰캣이 내장되어 있다.
설명에 앞서..
웹페이지는 정적컨텐츠와 동적컨텐츠가 모두 존재한다. 사용자의 요청에 맞게 동적컨텐츠를 만들어서 제공해야한다.
웹서버만을 이용한다면, 사용자가 원하는 요청에 대한 응답값을 미리 만들어놔야하는데 이것은 불가능하므로 WAS(Web Application Server)를 통해서 요청에 맞는 데이터를 DB에서 가져와서 그때그때마다 결과를 만들어 제공한다.
톰캣(Apache Tomcat)은 대표적인 WAS중 하나로, JSP페이지의 실행환경을 제공하는 웹 어플리케이션 서버이다.
톰캣은 자바코드를 이용해 HTML페이지를 동적으로 생성한다. 웹 컨테이너 또는 서블릿 컨테이너라고도 한다.
웹서버와 WAS를 분리?
DB조회나 다양한 로직을 처리하느라 바쁜 WAS가 정적컨텐츠 요청까지 처리한다면, 부하가 커지고 수행속도가 느려질 것이다. 따라서 단순 정적컨텐츠는 웹서버에서 빠르게 기능을 수행하도록 분리하는 것이 좋다.
동작원리
톰캣 실행시에 web.xml파일을 쭉 읽는다.
ContextLoaderListener가 create되면서 applicationContext.xml이 읽어진다. 여기에서는 보통 DB에 관련된 객체들을 컴포넌트 스캔을 통해 메모리에 올린다.
사용자의 요청이 들어오면 DispatcherServlet이 동작하여 컴포넌트 스캔을 통해서 자원들을 스캔하여 필요한 것들을 메모리에 올린다(IoC). 필요한 것들인지의 여부는 어노테이션으로 확인한다.
모든 요청이 끝나면 Data 혹인 html파일을 응답한다.
'Projects > SNS프로젝트' 카테고리의 다른 글
[댓글] 댓글 구현하기(1) (1) | 2022.02.07 |
---|---|
[회원가입] 회원가입 구현 (0) | 2022.01.17 |
Spring Security의 로그인 절차 (0) | 2022.01.16 |
@Builder를 써야하는 이유 (0) | 2022.01.15 |
[개념 정리] 스트링부트 기본 개념 (0) | 2022.01.15 |
댓글