[Spring] Spring IoC와 DI

박재연·2022년 2월 1일
0

Spring

목록 보기
1/3

IoC란?

  • Inversion of Control의 약자로 제어권이 역전되었다는 것을 의미

일반적으로 의존성에 대한 제어권은 자기 자신(아래에서는 MemberController)이 갖는 반면

class MemberController {
	private MemberRepository repository = new MemberRepository();
}

아래와 같이 MemberController 밖에서 생성될 때 MemberRepository의 의존성을 만드는 것

class MemberController {
	private MemberRepository repo;
    
    public MemberController(MemberRepository repo) {
    	this.repo = repo;
    }
}

이러한 이유로 DI도 일종의 IoC이다.

Spring이 제공하는 IoC 컨테이너

모든 작업을 사용하는 쪽에서 제어하기 때문에 해당 동작을 IoC 컨테이너에서 수행

스프링 IoC 컨테이너

  • BeanFactory
    IoC의 기능을 정의하고 있는 인터페이스

  • 스프링 IoC 컨테이너가 관리하는 객체
    기본적으로 싱글톤(프로토타입도 설정하면 가능)
    라이프사이클 인터페이스 지원
  • ApplicationContext
    BeanFactory를 상속받는 인터페이스

0개의 댓글