IOC(Inversion of Control)란?
- 객체의 생성, 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것을 의미한다.
- 메소드나 객체의 호출작업을 개발자가 결정하는 것이 아니라, 외부에서 결정되는 것을 의미한다.
- 즉 의존성을 직접적으로 만들지 않고, 외부에서 의존성을 가져오는 경우를 말합니다.
- 직접 new 등을 써서 만들어 쓰면 의존성을 자기가 직접 만들어 쓴다고 할 수 있습니다.
IOC 컨테이너
- 컨테이너는 보통 객체의 생명주기를 관리, 생성된 인스턴스들에게 추가적인 기능을 제공하도록 하는 것이다.
- IoC 컨테이너가 관리하는 객체들을 Bean이라고 부릅니다. 이러한 Bean들의 의존성을 관리하고, 객체를 만들어 주며, Bean으로 등록을 해주고, 이렇게 만들어진 것들을 관리합니다.
IOC 컨테이너 종류
- BeanFactory - IoC Container의 기본이 되는 인터페이스인데 Bean을 관리하는 역할을 하는 인터페이스이다.
- ApplicationContext - BeanFactory를 상속받고 있기 때문에 BeanFactory와 같은 기능을 한다고 볼 수 있다. 또한 BeanFactory 외에도 다양한 클래스들을 상속받고 있기 때문에 더 많은 기능을 제공하고 있다. 주로 Spring 프로젝트의 대부분은 ApplicationContext을 통해 Bean(스프링 객체)을 관리한다.
참고 사이트
https://chanhuiseok.github.io/posts/spring-4/
https://dev-coco.tistory.com/80