IoC(Inversion of Control)
IoC의 정의
제어의 반전, 일종의 규약, 원칙
💡 개발자가 객체를 생성하고 관리하는 권한이 스프링 프레임워크(Ioc 컨테이너)로 넘어가는 것.
IoC의 특징
- IoC에서는 객체가 자신이 사용할 객체를 생성하거나 선택하지 않는다.
- 객체는 자신이 어떻게 생성되고 사용되는지 알 수 없다.
- 모든 객체는 제어 권한을 위임받은 특별한 객체에 의해 만들어지고 사용된다.
IoC의 장단점
장점
- 인터페이스 기반 설계가 가능
- 컴퍼넌트 재사용성 증가
- 체계적이고 효율적인 의존상태 관리
단점
스프링 IoC 컨테이너
- Ioc를 구현하는 프레임워크로 객체를 관리하고, 객체의 생성을 책임지고, 의존성을 관리하는 컨테이너
- 빈 설정 소스로부터 빈 정의를 읽어들이고, 빈을 구성하고 제공한다.
- POJO 생성, 초기화, 서비스 소멸에 관한 모든 권한을 가지면서 POJO의 생명주기를 관리한다.
- 개발자들이 직접 POJO를 생성할 수도 있지만, 모든 권한을 Container에게 맡긴다.
💡빈 : 스프링 IoC 컨테이너가 관리하는 객체