Context에 관해서

0

개념정리

목록 보기
1/33

Context란?

  • 어떤 객체를 핸들링하기 위한 접근 수단
    ex) print를 하기 위해서는 printContext를 사용해야하고, Servlet을 수행하기 위해서는 Servlet Context를 사용해야한다.

web.xml

  • web.xml에서 ContextLoaderListener(root-context)와 DispatcherServlet(servlet-context) 생성.


➡︎ ApplicationContext(root)는 ContextLoaderListener 클래스에 의해 만들어지고,
➡︎ WebApplicationContext(servlet)은 DispatcherServlet 클래스에 의해 만들어진다.

  • ContextLoaderListener는 ServletContextListener 인터페이스를 구현한 것이며, root-content.xml 또는 ApplicationContext.xml에 따라 ApplicationContext를 생성한다.
    • ApplicationContext.xml에 등록돼있는 설정에 따라 Spring Container가 구동되며, 이때 개발자가 작성한 비지니스로직과 DAO, VO등의 객체가 생성된다.

ApplicationContext (인터페이스) - root

  • 전체 계층구조에서 최상단에 위치한 컨텍스트
  • 서로 다른 서블릿 컨텍스트에서 공유해야하는 Bean들을 등록해놓고 사용할 수 있다.
  • 이 context에 등록되는 모든 bean은 모든 context에서 사용 가능
  • 웹 어플리케이션 전체에 적용해야하는 기능 ex)DB 연결, 로깅기능 등에 이용(service, dao 포함)
  • Servlet Context에 등록된 Bean 이용 불가능! (servlet이 더하위)
  • Servlet Context와 동일한 Bean이 있을 경우 Servlet Context Bean이 우선된다.
  • 하나의 컨텍스트에 정의된 AOP 설정은 다른 컨텍스트의 빈에는 영향을 미치지 않는다.

WebApplicationContext 인터페이스 -> Servlet Context 객체반환

  • 서블릿에서만 이용되는 컨텍스트
  • 이 context에 등록되는 bean들은 servlet context에서만 사용 가능
  • 타 서블릿과 공유하기 위한 Bean들은 루트 웹 어플리케이션 컨텍스트에 등록해놓고 사용해야 한다
  • DispatcherServlet은 자신만의 컨텍스트를 생성&초기화하고 동시에 루트 어플리케이션 컨텍스트를 찾아서 자신의 부모 컨텍스트로 사용

WebApplicationContext vs ApplicationContext

  • 스프링 안에는 여러 종류의 ApplicationContext 구현체가 있다.
  • WebApplicationContextApplicationContext확장한 WebApplicationContext 인터페이스의 구현체를 말한다.
  • WebApplicationContext는 ApplicationContext에 getServletContext() 메서드가 추가된 인터페이스다.
    이 메서드를 호출하면 ServletContext를 반환합니다.
    ➡︎ 결국 WebApplicationContext는 ApplicationContext의 자식이면서 ServletContext와 연관 관계!에 있다는 정도로 정리가 됩니다
    이 메서드가 추가되면 ServletContext를 이용한 몇가지 빈 생애 주기 스코프가 추가 되기도 합니다.

출처

profile
백엔드를 공부하고 있습니다.

0개의 댓글