인프런 - 스프링부트 개념 정리(이론) - 정리

10강 - 서블릿 객체의 생명주기가 궁금해요!

달팽이포뇨 2023. 3. 22. 20:18

Inflearn 최주호 강사님의 스프링부트 개념정리(이론) 강의를 듣고 정리한 내용입니다.

 

URL: 자원 접근(ex. http://naver.com/a.png), URI: 식별자 접근(ex.http://naver.com/picture/a)

스프링은 URL을 통한 자원 요청을 막아놨다. -> 특정한 파일을 요청할 수 없다!

즉, 요청 시에는 무조건 JAVA를 거쳐야한다. -> 무조건 톰켓이 작동한다!

 

JAVA 자원 request가 오면 서블릿컨테이너(톰켓)에서

 

첫 번째 request 일 때,

서블릿 객체 생성(new) 

- init() -> 스레드1 생성 -> service() - POST, GET, PUT, DELETE 등의 메소드 중 어떤 메소드로 요청으로 왔는지 식별, 해당하는 메소드(GET, POST 등) 호출 -> response 되면 그 스레드가 비게 됨. - 없어지는 건 아니고 대기하던 요청에 재사용됨.

 

두 번째 request 일 때,

서블릿 객체 생성 재사용

 - init() 과정 X -> 스레드2 생성 -> service() 호출 -> ..

 

객체는 공유할 수 있지만, 메서드는 공유할 수 없다. - 서블릿 객체 하나여도 여러 스레드로 각각 메서드 사용 가능

 

톰켓 기본 설정: 스레드 20개

- 21번째 요청은 대기하다가 이전의 스레드가 response되어 종료되면 그 자리로 들어감(재사용) - Pooling 기법

 

많은 스레드를 생성할 수 있게 하려면:

1. Scale-Up : 컴퓨터의 성능 업그레이드, 2. Scale-Out : 컴퓨터의 개수 증가 - 분산처리