Spring Container에 대해서

정성윤·2023년 7월 25일

JPA

목록 보기
2/2

스프링 컨테이너(Spring Container)에 대해 설명해주세요.

간단하게만 쓰자고 하는게 자꾸만 길어진다.
원래 후달리는 놈이 혓바닥이 길다고 하지 않는가? 아귀냐고

일단 이론적인 부분을 조금만 정리해보고, 답변한다고 가정하여 작성을 해보자.

IoC(Inversion of Control)

이전에 DI, 의존성 주입에 대해 작성한 바 있다.
그런데 스프링 중요한거 3개 말해보아라 하면 AOP, PSA 그리고 DI/IoC 이다(사실 IoC/DI)
삼각형 많이 보셨을 것인데, 오늘은 IoC에 대해 살펴보고자 한다.
왜 DI랑 묶여져 있으며, 어떻게 설명해야

제어 반전

  • 사실 말이 엄청 있어보이지만 쉽게 생각하면 된다.
  • 객체의 생성부터 라이프사이클 관리까지 개발자인 내가 아닌 spring에게 하청을 맡기는 것이다.
  • 결국 프로그램을 만드는 사람은 나인데, 객체관리의 주체는 내가 되는 것이 마땅하지만
    그것을 스프링 컨테이너에게 떠넘겨버리는 것
  • 하청을 줘버리는 것으로 나는 작업중인 비즈니스 로직에만 집중할 수 있고 TDD에도 편함

BeanFactory

  • 스프링 컨테이너의 최상위단에 있는 인터페이스
  • 빈의 생성, 관계설정과 같은 기본 기능을 담당
  • bean 생성 및 로딩 방식 : lazy-loading

Application Context

  • 빈팩토리 하위에 있음
  • 하지만 기본 기능보다는 애플리케이션 전반에 걸친 모든 요소의 제어를 담당
  • 별도의 설정값(.yml, .xml 등)을 가져와서 이를 활용하는 범용적인 엔진역할
  • 컴포넌트를 생성하고 관계 형성을 해줌
  • bean 생성 및 로딩 방식 : pre-loading

또 길어질려고 하니 정리하겠다.

컨테이너는 BeanFactory, Application Context 두개로 나눌 수 있다.
상위에 있는 놈이 BeanFactory, 하위에 있는 놈이 Application Context 이다.
가장 기본 기능을 담당하는 놈이 빈팩토리, 앱 전반적인 제어 기능을 담당하는 놈이 애플리케이션 컨텍스트이다.

profile
이제 운동을 좋아해야만 하는데

0개의 댓글