Listener

0

개념정리

목록 보기
25/33

Listener?

  • 톰캣이 구동될 때 servlet Context는 자동생성되고, 이게 다 생성 완료 돼야 요청을 처리할 수 있는 단계가 됨.
    -> servlet Context가 다 생성됐다는 것을 감시, 소멸됐음을 감시하는 감시자가 있다.
    -> serlvet ,HttpServletRequest (요청 할때마다 생성되는 객체), HttpSession 이들을 생성&소멸 감시자가 있다.
    --> 감시자를 만들기 위해서 class -> Listener가 있음 -> listner를 생성하면
  • 어떤 것을 관리하는 리스너인지 골라서 생성. 생성&소멸이 아닌 다른 옵션도 선택해서 만들 수 있다.
  • 스프링에서 제공하는 기본 감시자 클래스가 있는데,
<!-- web.xml에 리스너 등록하는 코드 -->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

-> ServletContextListener 로부터 implements된 클래스. -> ServletContext를 감시하는 Listener를 만드려면 이 ServletContextListener를 구현해야함.

↳ 컨텍스트 객체가 생성될 때 자동으로 호출되는 메서드.

  • listener를 등록하게 되면 servletContext가 생성되자마자 spring WebApplicationContext를 미리! 만들어줌.
<!-- web.xml 에 설정 -->
<context-param>
  	<param-name>contextConfigLocation</param-name>
  	<param-value>/WEB-INF/myApplicationContext2.xml</param-value>
  </context-param>

↳ servlet Context 객체의 파라미터로 설정하는 것

↳ 오른쪽에 있는 코드

📌 스프링 컨테이너 구동 과정

1. Spring ApplicationContext 작업

  • 톰캣 구동 → ServletContext 객체 생성
    → ContextLoaderListener 감시자의 contextInitialized() 호출
    → ServletContext 객체의 parameter 중 ContextConfigLocation값 찾기 (ex, /WEB-INF/myApplicationContext2.xml)
    → xml문서 읽어서 Spring WebApplicationContext 생성
    → Spring WebApplicationContext 반환

    ( 미리 Spring WebApplicationContext을 만들어 놓고 뒤에 2번 작업을 통해 컨테이너를 update, 보강하는 작업을 함.)


2. Spring ApplicationContext 작업

  • DispatcherServlet 객체 생성 될때, 반환받은 Spring WebApplicationContext을 사용
    → DispatcherServlet의 parameter중에 contextConfigLocation이라는 parameter 값을 찾음
    (ex, /WEB-INF/myServletContext.xml)
    → xml을 읽어서 SpringWebApplicationContext를 update하는 작업.
  • 시간이 오래걸리는 파란줄 쳐진 작업을 먼저하고, 그 후에 servlet으로 보강하는 작업을 거침!!!
profile
백엔드를 공부하고 있습니다.

0개의 댓글