IoC / 컨테이너

Haechan Kim·2023년 1월 5일
0

Spring

목록 보기
21/68

IoC (Inversion of Control) 제어의 역전
메소드나 객체 호출을 개발자가 결정하는 것이 아니라 외부에서 결정하는 것.
스스로 의존성 객체 만드는 것이 아닌 제어권을 스프링에게 위임해, 스프링이 만들어 놓은 객체를 주입! (개발자에서 DI 제어권이 없음.)
개발자가 객체 생성 안하고 컨테이너에서 가져옴.

DI 컨테이너
의존성 주입 시 객체를 생성해 주입하는 것 도와주는 것이 바로 DI 컨테이너
@Configuration : 구성정보 담당하는 것 설정 시
@Bean : 메서드에 붙이면 스프링 컨테이너에 자동 등록

스프링 컨테이너
스프링 컨테이너는 스프링에서 자바 객체(빈) 관리하는 공간.
스프링 컨테이너에서 빈 생성과 소멸을 관리.
ApplicationContext를 스프링 컨테이너라고 함.
ApplicationContext는 인터페이스.
스프링 컨테이너는 @Configuration이 붙은 클래스를 설정정보로 사용.
여기서 @Bean 메서드를 모두 호출해서 반환된 객체를 스프링 컨테이너에 등록.
이렇게 스프링 컨테이너에 등록된 객체를 스프링 빈이라고 함.

BeanFactory : 스프링 컨테이너의 최상위 인터페이스. 스프링 빈 관리, 조회 역할. 직접 사용 x
ApplicationContext : BeanFactory 모든 기능 상속받아 제공 + 부가 기능

스프링 컨테이너에 빈 등록 이유는, 스프링이 각 객체간 의존관계 정리하도록 하는데 큰 목적.
객체가 의존관계 등록 시 스프링 컨테이너에서 해당하는 빈 찾고, 그 빈과 의존성 만듦.

  • 스프링 컨테이너에 빈 생성 방법
  1. 컴포넌트 스캔
    @Comnponent 어노테이션 부여된 클래스 찾아 자동으로 빈으로 등록.

  2. 스프링 빈 직접 등록
    @Configuration에서 @Bean으로 등록

<참고>
https://chobopark.tistory.com/m/200
https://velog.io/@tank3a/스프링-컨테이너와-스프링-빈

0개의 댓글