스프링 제어 반전 (Inversion of control)
28 Mar 2021제어 반전 (Inversion of control)
스프링 프레임워크를 실행하면 IoC 컨테이너에서 DI(BeanDefinition에 사전 정의된 Bean 의존성 주입) 가 수행 된다.
이렇게 IoC 컨테이너에서 하위 모듈을 관리하고 주입시켜주면 상위 모듈은 제어권이 없어지게 된다.
기존 상위 모듈에서 하위 모듈 방향으로 이어지던 제어권이, IoC 컨테이너를 통해 역전 되었다고 하여 Inversion of control 이라 한다.
강 결합 방식 설계 (좋지 않은 설계 방식)

그림 1
- 상위 모듈에서 하위 모듈을 관리한다. (제어권이 상위 모듈에 있음)
문제점

그림 2
- 상위 모듈에서 하위 모듈을 관리하면 Coupling(결합도)가 증가하여 모듈화가 어려워진다.
- 예시로
Model
을 변경하면 그와 관련된Repository
가 수정되고Service
가 수정되고 … (관련된 코드는 전부 수정됨)
Inversion of control 으로 해결

그림 3
- IoC 컨테이너에 의해 객체가 생성되고 관리, 주입된다.

그림 4
- 의존 관계(=제어권, control)가 역전(Inversion)되어, 상위 모듈은 하위 모듈로 부터 자유로워진다.
(결합력이 감소되었으므로)