IoC(Inversion of Control: 제어의 역전) 컨테이너

devyumi·2023년 12월 4일

Spring

목록 보기
1/14

IoC 컨테이너

  • 개발자 대신 컨테이너가 인스턴스 제어권을 가지고, 인스턴스 생명주기를 관리하며, 생성된 인스턴스에 추가적인 기능을 제공하는 것

  • 즉, 프로그램의 제어 흐름이 개발자에서 컨테이너로 역전된 것임

  • 일반적인 프로그램 흐름 (main에서 사용할 객체를 생성하는 것)과는 반대로 객체의 호출 작업이 외부에서 결정됨

  • 스프링 컨테이너, DI 컨테이너로도 불림



구현 방법

   1. DL

  • Bean에 접근하기 위해 컨테이너가 제공하는 API를 이용하여 Bean을 Lookup 하는 것

   2. DI

  • 컨테이너가 객체 간의 의존관계를 Bean 설정 정보를 바탕으로 외부에서 주입하는 것

  • 방법으로는 생성자 주입, 필드 주입, 수정자 주입 등이 있음

  • DL 사용시 컨테이너 종속성이 증가하므로 주로 DI를 사용함



종류

   1. Bean Factory

  • 빈 등록, 생성, 조회, 반환, 관리하는 스프링 컨테이너의 최상위 인터페이스

  • 보통 Bean Factory를 바로 사용하지 않고, 이를 확장한 Application Context를 사용함


   2. Application Context

  • Bean Factory를 확장한 IoC 컨테이너

부가 기능

  • Transaction 처리
  • AOP 처리
  • MessageSource: 메시지 다국화 처리
  • EnvironmentCapable: 어플리케이션 구동에 필요한 설정 처리
  • ApplicationEventPublisher: 어플리케이션 이벤트 처리
  • ResourceLoader: 파일 등의 외부 리소스를 읽어오는 처리


장점

  • 개발자는 비즈니스 로직 구현에 집중할 수 있음

  • 객체 생성 코드가 없어서 TDD에 용이함

profile
Web Back-end Junior Developer

0개의 댓글