일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 객체형변환
- Eureka
- 생성자
- object
- reference
- run()
- arguments
- constantnumber
- fuction
- overload
- start()
- ALTER
- value
- eclipse
- class
- hamobee
- abstractclass
- override
- Vector
- MSA
- concreteclass
- Polymorphism
- methodArea
- 추상클래스
- 콘크리트클래스
- garbagecollection
- string
- hashCode
- Hashtable
- super
- Today
- Total
뇌운동일지
spring 실행순서 본문
아래의 글을 공부한 내용
Spring Framework 실행순서
사전지식 POJO 스프링의 특징 중 하나 평범한 옛날 자바 객체 Not POJO = Servlet의 특징 javax.servlet, javax.servlet.http 패키지를 import해야 한다. Servlet, Generic Servlet, HttpServlet 중 하나를 상속해..
javannspring.tistory.com
Servlet Container (Servlet Engine)
- 서블릿 실행
- 세션 관리
- 네트워크 서비스
- 메시지 인코딩/디코딩
- 서블릿 생명주기 관리
spring 실행순서
1. loading
웹 어플리케이션이 실행되면 Tomcat(WAS)에 의해 web.xml Loading
Servlet Container (ex: 톰캣 서버) -> URL 확인 -> 요청 처리할 서블릿 찾아 실행
web.xml : 설정을 위한 파일
2. create
web.xml 에 등록되어 있는 ContextLoaderListener (Java Class) 생성
서블릿 컨테이너가 파일을 읽어서 구동할 때, ContextLoaderListener 가 자동으로 메모리에 생성(Pre-Loading)
ContextLoaderListener 클래스
ServletContextListener 인터페이스 구현하고 있음. ApplicationContext 생성하는 역할 수행
Servlet 생명주기 관리
Servlet 사용하는 시점에 서블릿 컨텍스트에 ApplicaionContext 등록, Servlet이 종료되는 시점에 ApplicationContext 삭제
3. loading
생성된 ContextLoaderListener는 root-context.xml Loading
4.running, create, create
root-context.xml 에 등록되어 있는 Spring Container 구동
root-context.xml 에는 view 지원을 제외한 공통 bean 설정 (web 관련 bean들은 등록해주지 않음)
5. request from Client
클라이언트로부터 웹 어플리케이션 요청이 옴.
최초의 클라이언트 요청에 의해 DispatcherServlet 생성
6. create
DispatcherServlet 생성됨
DispatcherServlet 객체는 servlet-context.xml 파일 로딩, 두번째 스프링 컨테이너 구동
이 두번째 스프링 컨테이너가 Controller 객체를 메모리에 생성
DispatcherServlet은 FrontController 역할 수행.
클라이언트로부터 요청 온 메시지를 분석하여 알맞은 PageController에게 전달하고 응답받아 요청에 따른 응답 결정
7. loading
DispatcherServlet은 servlet-context.xml Loading
web.xml을 보면 DispatcherServlet 이 servlet-context.xml 을 가리키고 있음.
servlet-context.xml 을 보면 어노테이션을 스캔하여 bean 객체로 등록함을 볼 수 있다.
8. running
----------------------------------------------------------------------
아래의 글을 공부한 내용
codevang.tistory.com/248?category=847271
스프링(Spring) MVC 동작 구조 및 스프링 컨테이너
- Develop OS : Windows10 Ent, 64bit - WEB/WAS Server : Tomcat v9.0 - Language : JAVA 1.8 (JDK 1.8) - Framwork : Spring 3.1.1 Release - Build Tool : Maven 3.6.3 서블릿을 다루다 스프링으로 넘어온 후..
codevang.tistory.com
1. 톰캣(WAS) 구동 (web.xml)
스프링 MVC 프로젝트 구동 시, WAS 먼저 구동
스프링 - 자바의 서블릿 컨테이너 구동 방식 위에서 구동되는 라이브러리 집합체
WAS 도 서블릿 컨테이너
1-1. Context Path 설정
톰캣 server.xml
context path 와 프로젝트(어플리케이션) 이름 매핑 ) 이 path 를 달고 들어오는 URL 은 해당 프로젝트에 대한 요청이다.
ex) path="/" 이면, 별도의 context path 없는 url 로 바로 접속
1-2. 루트 컨테이너 생성
구동될 때 참조하는 설정 파일 ) 프로젝트 안의 WEB_INF/web.xml
루트 컨테이너 : 어플리케이션(프로젝트 단위)에 딱 하나만 생기는 최상위 부모 컨테이너
- 웹기술과 관계없는 자원에 대한 빈(Bean) 만들어 관리
참고) 스프링 컨테이너 3가지 - 루트 컨테이너 1개 - 각 서블릿들이 하나씩 가지는 컨테이너 - 개발자가 직접 만드는 컨테이너 |
루트와 서블릿용 컨테이너 ) 스프링 MVC 구조에 따라 설정 파일에 있는 내용대로 자동 생성
개발자가 xml 설정 파일 외 자바 코드에서 생성에 관여하는 부분없다.
루트 컨테이너
모든 서블릿들에서 공유할 전역 설정과 bean 생성해 사용
각 서블릿용 컨테이너
해당 서블릿 고유 설정과 bean 생성해 사용
서블릿용 컨테이너는 루트 컨테이너의 자식
부모 컨테이너로부터 필요한 걸 가져와 사용 가능 (반대는 불가)
WAS 구동 시, 루트 컨테이너(어플리케이션 루트 컨텍스트) 생성
'루트 컨테이너' 설정
1-3. URL 매핑
스프링에서 DispatcherServlet 클래스 제공
서블릿 컨테이너가 클라이언트로부터 URL 요청을 받았을 때, 어떤 서블릿 클래스로 넘겨줄지 매핑해주는 설정
이 서블릿으로 모든 요청("/") 매핑해주겠다.
처음 서블릿 생성 시, 서블릿 컨테이너 설정 파일인 'servlet-context.xml' 파일을 파라미터로 제공해주겠다.
요청이 한번도 안들어왔으므로, 서블릿은 생성되지 않고 대기 설정 파일만 가지고 있음.
1-4. 필터 설정 적용
필터 설정) 서블릿으로 요청이 들어가기 전, 최종 응답 전 공통적으로 수행되어야 할 기능 구현해주는 설정
ex) 인코딩, 스프링 시큐리티 등 공통 처리에 사용
필터 설정 없으면, 요청 객체마다 처리해주어야 함.
=> 서블릿 컨테이너(WAS)가 구동되었으므로, 웹 어플리케이션은 클라이언트 요청을 기다리고 있는 상태
2. 클라이언트 요청에 따른 서블릿 구동
2-1. DispatcherServlet 로드 및 스프링 컨테이너 생성
첫 요청이 들어오면, 서블릿 컨테이너가 URL매핑된 서블릿을 찾아 메모리에 로드
JVM 의 코드 영역에 서블릿의 소스 코드 로드. 힙 영역에 기타 참조 객체 로드.
스프링 MVC 프로젝트) 프론트 컨트롤러의 서블릿 역할로 이미 스프링에서 만들어 둔 DispatcherServlet 클래스 사용 (커스터마이징도 가능)
이 서블릿을 처음 구동시키면서, 초기화 파라미터(init-param)로 'servlet-context.xml' 파일 넘겨줌. 서블릿은 이 파일의 설정대로 동작.
2-2. servlet-context.xml 설정대로 기능 분배
'Spring' 카테고리의 다른 글
JNDI (0) | 2021.03.11 |
---|---|
spring 에서 .xml 설정 이해하기 (0) | 2021.03.09 |
[ spring ] spring mvc 구성 기본 예제 (0) | 2020.08.03 |
스프링 프로젝트를 구성하는 방법 (0) | 2020.06.17 |
ibatis (0) | 2020.06.15 |