jusung-c
으 하기싫어
jusung-c
  • 공부 기록 (96)
    • Spring (42)
      • Spring 기초 이론 (8)
      • Spring 핵심 원리 - 기본 (9)
      • Blog 만들기 with SpringBoot (25)
    • JAVA (7)
      • Java 문법 (2)
      • 객체지향의 사실과 오해 (5)
    • Algorithm (47)
      • 자료구조 (3)
      • 완전탐색 (22)
      • 정렬 (4)
      • 이분탐색 (12)
      • 투 포인터 (4)
hELLO · Designed By 정상우.
jusung-c

으 하기싫어

[Spring 기초 이론] 애플리케이션 컨텍스트
Spring/Spring 기초 이론

[Spring 기초 이론] 애플리케이션 컨텍스트

2022. 4. 1. 20:24

스프링 컨테이너

 

DispatchServlet에 의해 생성되어지는 수 많은 객체들은 어디에서 관리될까? 

 

1. ApplicationContext

객체들이 DispatchServlet에 의해 컴포넌트 스캔이 될 때 ApplicationContext에 등록되는 것을 IoC(제어의 역전)이라고 한다. 직접 new를 통해 객체를 생성하면 해당 객체의 레퍼런스 변수를 관리하기 어렵기 때문에 스프링이 직접 해당 객체를 관리한다. 

 

우리는 이 객체의 주소를 몰라도 된다. 필요할 때 DI(의존성 주입)를 통해 사용하면 된다.

DI는 필요한 곳에서 ApplicationContext에 접근해 필요한 객체를 가져오는 방법이다. ApplicationContext는 싱글톤이므로 어디에서 몇번을 접근하든 동일한 객체를 보장한다. 

 

  • servlet-applicationContext 
    • ViewResolver, Interceptor, MultipartResolver 객체를 생성
    • 웹과 관련된 어노테이션 Controller, RestController 스캔 (메모리에 로딩)
    • DispatcherServlet에 의해 실행
  • root-applicationContext
    • 어노테이션 Service, Repository 등을 스캔(메모리에 로딩)하고 DB 관련 객체 생성
    • ContextLoaderListener에 의해 실행
    • ContextLoaderListener는 web.xml이 실행해주기 때문에 root-applicationContext는 servlet-applicationContext보다 먼저 로드

 

root-applicationContext가 먼저 로드되기 때문에 후에 로드된 servlet-applicationContext는 이를 참조할 수 있지만 그 반대는 불가능하다. 

출처 : https://minwan1.github.io/2018/11/21/2018-11-21-jsp-springboot-%EB%8F%99%EC%9E%91%EA%B3%BC%EC%A0%95/

 

 

2. Bean Factory

필요한 객체를 Bean Factory에 등록하면 초기에 메모리에 로드되지 않고 필요할 때 getBean()이라는 메소드를 통해 호출하여 메모리에 로드할 수 있다. 이것 또한 IoC이기 때문에 필요할 때 DI로 사용하는 방식이다. 

 

ApplicationContext와 다른 점은 Bean Factory에 로드되는 객체들이 미리 로드되지 않고 필요할 때 호출해서 로드하기 때문에 lazy-loading이 된다는 점이다.

 

 

 

 

 

 

 

 

 

 

 

 

출처

 

[무료] 스프링부트 개념정리(이론) - 인프런 | 강의

스프링부트를 공부하며 헷갈리는 개념이 많았던 분 스프링부트에 대해 공부하고 싶었던 모든 분, - 강의 소개 | 인프런...

www.inflearn.com

 

저작자표시 비영리 변경금지 (새창열림)

'Spring > Spring 기초 이론' 카테고리의 다른 글

[Spring 기초 이론] 스프링부트의 Response 방식  (0) 2022.04.01
[Spring 기초 이론] 디스패처 서블릿  (0) 2022.03.31
[Spring 기초 이론] 웹 배포서술자 (web.xml)  (0) 2022.03.17
[Spring 기초 이론] Springboot - 서블릿 컨테이너  (0) 2022.03.17
[Spring 기초 이론] Springboot - Apache Tomcat  (0) 2022.03.03
    'Spring/Spring 기초 이론' 카테고리의 다른 글
    • [Spring 기초 이론] 스프링부트의 Response 방식
    • [Spring 기초 이론] 디스패처 서블릿
    • [Spring 기초 이론] 웹 배포서술자 (web.xml)
    • [Spring 기초 이론] Springboot - 서블릿 컨테이너
    jusung-c
    jusung-c

    티스토리툴바