Ioc, DI 컨테이너

진성대·2023년 10월 4일
0

java spring

목록 보기
14/15

제어의 역전 IOC (Inversion of Control)

  • 기존 프로그램은 클라이언트 구현 객체가 스스로 필요한 구현 객체로 생성하고, 연결하고, 실행했다. 한마디로 구현객체가 프로그램의 제어 흐름을 통제했다.
  • 반면에 AppConfig가 등장한 이후로 구현 객체는 오직 구현 하나의 기능에만 집중할 수 있게 되었다. 프로그램의 제어의 흐름은 이제 AppConfig가 가져간다 예를 들어서orderServieImpl 은 필요한 인터페이스들을 호출하지만 어떤 구현 객체가 실행되는지 모른다.
  • 프로그램에 대한 제어흐름에 대한 권한은 모두 AppConfig가 가지고 있다. 심지어 OrderServiceImplAppConfig가 생성한다. 그리고 AppConfigOrderServiceImpl이 아닌 OrderService 인터페이스의 다른 구현객체로 생성하고 실행할 수 있다. 그런 사실을 모른체 OrderServiceImpl은 묵묵히 자신의 기능을 실행한다.
  • 이렇듯 프로그램의 제어흐름을 그 클래스 내에서 직접 설정하는 것이 아닌 AppConfig 라는 (외부)에서 관리를 하는데 이를 제어의 역정(IOC)라고 한다.

프레임워크 vs 라이브러리

  • 프레임워크가 내가 작성한 코드를 제어하고, 대신 실행하면 그것은 프레임워크가 맞다
    • ex) Junit
  • 반면에 내가 작성한 코드가 직접 제어의 흐름을 담당한다면 그것은 라이브러리이다

의존관계 주입

profile
신입 개발자

0개의 댓글