본문 바로가기
JAVA/JAVA 기본

IoC(Inversion of Control) 제어의 역전 현상

by F.E.D 2018. 4. 12.

제어의 역전현상?


기존에 자바 기반으로 어플리케이션을 개발할 때 자바 객체를 생성하고 서로간의 의존 관계를 연결시키는 작업에 대한 제어권은 보통 개발되는 어플리케이션에 있었다.
그러나 Servlet, EJB 등을 사용하는 경우 Servlet Container, EJB Container에게 제어권이 넘어가서 객체의 생명주기(Life Cycle)를 Container들이 전담하게 된다.
이처럼 IoC에서 이야기하는 제어권의 역전이란 객체의 생성에서부터 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것을 의미한다.



제어의 역전현상으로 인하여 인터페이스 기반 설계가 가능하게 된다.

따라서 컴포넌트화를 쉽게 할 수 있고 그것은 곧 재사용성의 증가로 이어진다.

컴포넌트화를 함에 따라 Dependency의 효율적 관리도 따라오게 된다.


하지만 반대로되어 있는 제어구조 때문에 이해하기 어려운 코드가 되기도 한다.



컨테이너(Container)란?

Servlet의 생성, 생성 후 초기화, 서비스 실행, 소멸에 관한 모든 권한을 가지면서 Servlet의 생명주기를 관리한다.

대표적인 Container에는 Tomcat, jetty, jboss 등이 있다.



빈(Bean)?

빈 또는 빈 오브젝트라고 한다. 스프링이 IoC방식으로 관리하는 오브젝트라는 뜻이다.
관리되는 오브젝트라고 부르기도 한다. 스프링이 직접 그 생성과 제어를 담당하는 오브젝트만을 빈이라고 부른다.


빈 팩토리

스프링의 IoC를 담당하는 핵심 컨테이너를 가리킨다. 빈을 관리하는 기능을 한다. 보통은 이를 확장한 버전인 애플리케이션 컨텍스트를 이용한다. 

애플리케이션 컨텍스트

빈 팩토리를 확장한 IoC 컨테이너다. 빈을 등록하고 관리한다.
이것은 빈 팩토리의 기능과 동일하다. 부가적으로 스프링이 제공하는 각종 부가 서비스를 제공한다.
빈 팩토리라고 할 때는 주로 빈의 생성과 제어를 한다는 것이고
애플리케이션 컨텍스트라고 할 때는 스프링이 제공하는 애플리케이션 지원 기능을 부가적으로 포함한다고
생각하면 될 것 같다. 스프링에서는 애플리케이션 컨텍스트를 빈 팩토리보다 더 많이 사용한다.
ApplicationContext는 BeanFactory를 상속한다.

설정 정보 / 설정 메타 정보

스프링의 설정정보란 에플리케이션 콘텍스트 또는 빈 팩토리가 IoC를 적용하기 위해 사용하는 메타정보를 말한다.
영어로 'Configuration'이라고 하는데, 이는 구성정보 내지는 형상정보라고 일컫는다.
애플리케이션 자체의 전체 그림이라고 보는 편이다.





출처 : 

http://wiki.gurubee.net/pages/viewpage.action?pageId=26740787

http://natana1992.tistory.com/33

'JAVA > JAVA 기본' 카테고리의 다른 글

Java에서 HashMap 사용하기  (0) 2018.05.24
인터셉터란? JSP Filter와의 비교, url-pattern  (0) 2018.05.14
[자료구조] 큐(Queue)  (0) 2018.04.15
REST의 기본  (2) 2018.04.15
Bean Scope & Singleton  (0) 2018.04.12

댓글