본문 바로가기

Spring

IOC

IOC(Inversion of Control) : 제어의 역전

 

[ 정의 ]

Spring Framework는 IOC기반이다. 

일반적으로 지금까지 프로그램은

1. 객체 결정 및 생성 

2. 의존성 객체 생성 

3. 객채 내의 메소드 호출 
을 반복. 

이는 각 객체들이 프로그램의 흐름을 결정하고 각 객체를 구성하는 작업에 직접적으로 참여한 것.

즉, 모든 작업을 사용자가 제어하는 구조이다.

 

하지만 IOC에서 객체는 자기가 사용할 객체를 선택하거나 생성하지 않는다. 또한 자신이 어디서 만들어지고 어떻게 사용되는지 또한 모른다. 자신의 모든 권한을 다른 대상에 위임함으로 써 제어권한을 위임받은 특별한 객체에 의해 결정되고 만들어진다.

즉, 제어의 흐름을 사용자가 컨트롤 하지 않고 위임한 특별한 객체에 모든 것을 맡기는 것.

 

IOC란 기존 사용자가 모든 작업을 제어하던 것을 특별한 객체에 모든 것을 위임하여 객체의 생성부터 생명주기 등 모든 객체에 대한 제어권이 넘어 간 것을 IOC, 제어의 역전이라고 함.

 

 

[ 구성요소 ]

1. DL(Dependency Lookup) : 의존성 검색

컨테이너에서는 객체들을 관리하기 위해 별도의 저장소에 빈을 저장하는데 저장소에 저장되어 있는 개발자들이 컨테이너에서 제공하는 API 를 이용하여 사용하고자 하는 빈 을 검색하는 방법.

 

2 . DI(Dependency Injection) : 의존성 주입

의존성 주입(dlrmsgkr.tistory.com/30?category=842053)이란 객체가 서로 의존하는 관계가 되게 의존성을 주입하는 것입니다. 객체지향 프로그램에서 의존성 이란 하나의 객체가 어떠한 다른 객체를 사용하고 있음을 의미. 그렇다면 IOC에서의 DI는?

바로 각 클래스 사이에 필요로 하는 의존관계를 빈 설정 정보를 바탕으로 컨테이너가 자동으로 연결해 주는 것.

 

 

참고 사이트 : khj93.tistory.com/entry/Spring-Spring-Framework%EB%9E%80-%EA%B8%B0%EB%B3%B8-%EA%B0%9C%EB%85%90-%ED%95%B5%EC%8B%AC-%EC%A0%95%EB%A6%AC

728x90
반응형