[스프링] IoC / DI 컨테이너

Jaedeok Lee·2021년 8월 16일
0

Spring

목록 보기
1/3
post-thumbnail

컨테이너(Container)란?

  • 컨테이너인스턴스의 생명주기(라이프 사이클)를 관리한다.
  • 생성된 인스턴스들에게 추가적인 기능을 제공한다.
  • 톰캣(WAS)Servlet 컨테이너를 통해 Servelt 요청을 해결한다.

IoC란?

  • IoCInversion of Control의 약자이다. inversion은 사전적 의미로는 '도치, 역전'이다. 보통 IoC를 제어의 역전이라고 번역한다.
  • 개발자는 프로그램의 흐름을 제어하는 코드를 작성한다. 하지만 이 흐름의 제어를 개발자가 하는 것이 아닌 다른 프로그램이 그 흐름을 제어하는 것을 IoC라 말한다.
  • 즉, 개발자가 객체를 생성하는 것이 아니라 컨테이너에서 가져오는 것이다.
  • Spring에서 Bean FactoryAppllcation Context가 이런 공장의 역할을 해준다.

DI란?

  • DIDependency Injection의 약자로, 의존성 주입이란 뜻이다.
  • DI는 클래스 사이의 의존 관계를 빈(Bean)설정 정보를 바탕으로 컨테이너가 자동으로 연결해주는 것을 말한다.

DI 적용 X

Spring에서 DI 적용

Spring에서는 인스턴스를 생성하는 코드는 보이지 않고 어노테이션을 이용해서 컨테이너에게 맡기면서 사용한다.

Spring에서 제공하는 IoC/DI 컨테이너

  • BeanFactory : IoC/DI에 대한 기본 기능을 가지고 있다.
  • ApplicationContext : BeanFactory의 모든 기능을 포함하며, 일반적으로 BeanFactory보다 추천된다. 트랜잭션처리, AOP 등에 대한 처리를 할 수 있다. BeanPostProcessor, BeanFactoryPostProcessor등을 자동으로 등록하고, 국제화 처리, 어플리케이션 이베트 등을 처리할 수 있다.

BeanPostProcessor : 컨테이너의 기본 로직을 오버라이팅해서 인스턴스화의 의존성 처리 로직 등을 개발자가 원하는 대로 구현을 할 수 있게 해준다.
BeanFactoryPostProcessor : 설정 메타 데이터를 커스텀 마이징 할 수 있는 부분이다.


참고
부스트 코스

profile
궁금하거나 추가해야 되는 부분 있으면 댓글 달아주세요~

0개의 댓글