🍀 Spring
IoC: Inversion of Control
의존성
A 클래스 안에 B 클래스의 인스턴스를 만들어 사용하는 상황
→ A는 B에 의존적이다.
정의
프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것
목적 및 특징
- 객체가 자신이 사용할 객체를 생성하거나 선택하지 않는다.
- 객체는 자신이 어떻게 생성되고 사용되는지 알 수 없다.
- 모든 객체는 제어 권한을 위임받은 특별한 객체에 의해 만들어지고 사용된다.
장점
- 의존성 감소
- 모듈을 쉽게 교체 가능한 구조로 만들어 변화에 대응 가능
- 유지 보수 용이
- 체계적이고 효율적인 의존상태 관리
- 재사용성 높아짐
- 테스트 용이
- 코드양 감소
- 인터페이스 기반 설계가 가능
단점
예시
Spring Container(= IoC Container)
- 개발자에게 위임받은 제어권을 사용하여 의존성 관리 / 인스턴스 생성, 메모리 해제
- 프레임워크(Spring Container ~= ApplicationContext)가 이 역할을 함