IoC(Inversion of Control)개념

 

IoC는 Inversion of Control의 약자이다. 우리나라 말로 직역해 보면 "역제어"라고 할 수 있다. 제어의 역전 현상이 무엇인지 살펴본다. 기존에 자바 기반으로 어플리케이션을 개발할 때 자바 객체를 생성하고 서로간의 의존 관계를 연결시키는 작업에 대한 제어권은 보통 개발되는 어플리케이션에 있었다. 그러나 Servlet, EJB 등을 사용하는 경우 Servlet Container, EJB Container에게 제어권이 넘어가서 객체의 생명주기(Life Cycle)를 Container들이 전담하게 된다. 이처럼 IoC에서 이야기하는 제어권의 역전이란 객체의 생성에서부터 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것을 의미한다. Spring Framework도 객체에 대한 생성 및 생명주기를 관리할 수 있는 기능을 제공하고 있다. 즉, IoC Container 기능을 제공하고 있다. 

Inversion of Control(이하 IoC)이란?
  • Component dependency resolution, configuration 및 lifecycle을 해결하기 위한 Design Pattern
  • DIP(Dependency Inversion Principle) 또는 Hollywood Principle (Don't call us we will call you)라는 용어로도 사용
  • 특정 작업을 수행하기 위해 필요한 다른 컴포넌트들을 직접 생성하거나 획득하기 보다는 이러한 의존성들을 외부에 정의하고 컨테이너에 의해 공급받는 방법으로 동작
이러한 IoC는 다음과 같은 장점을 가지고 있다.
  • 클래스 / 컴포넌트의 재사용성 증가
  • 단위 테스트 용이
  • Assemble과 configure를 통한 시스템 구축 용이

 

http://dev.anyframejava.org/anyframe/doc/core/3.2.0/corefw/guide/ioc.html
Posted by 코딩하는 야구쟁이
,