주간 베스트 월간 베스트 3개월 베스트 베스트 게시물
꽃배달 한국, 중국 전지역배송

spring IoC(2)

Exception | 2009.04.15 19:44:35 댓글: 0 조회: 2276 추천: 0
분류웹 프로그래밍 https://life.moyiza.kr/itstudy/1759401

Inversion of Control(IoC)

Spring 프레임워크가 가지는 가장 핵심적인 기능이 IoC이다. IoC 개념은 과거에도 많은 곳에서 사용된 개념이지만 최근 Spring 프레임워크와 같은 Lightweight 컨테이너 개념이 등장하면서 많은 개발자들에게 관심의 대상이 되고 있다.
Spring
프레임워크가 가지고 있는 가장 중요한 기능인 만큼 IoC 개념에 대해서 반드시 이해해야 한다. 사실 IoC 무슨 개념인지를 제대로 이해한다면 장에서 다루고자하는 거의 모든 내용을 이해한 것이나 다름없다. 장의 나머지 부분에서는 단지 Spring 프레임워크가 IoC 기능을 지원하기 위하여 제공하는 API 사용법에 대하여 다루고 있다. API 대해서는 Spring 프레임워크에서 제공하는 레퍼런스 문서나 API 문서를 통해서도 쉽게 사용하는 것이 가능하다. IoC 개념은 Spring 프레임워크 뿐만 아니라 컨테이너 기능을 가지는 모든 영역에서 사용되고 있는 개념이므로 반드시 이해하기 바란다.

IoC?

IoC 절의 제목에서 있듯이 Inversion of Control 약자이다. 우리나라 말로 직역해 보면 "역제어"라고 있다. 제어의 역전현상이라? 도대체 무엇에 대한 제어가 바뀌였다는 것인가? IoC 개념을 이해하기 위해서는 먼저 무엇에 대한 제어가 바뀐 것인지를 이해하는 것이 우선일 것으로 생각한다.

지금까지 우리들이 자바 기반으로 애플리케이션을 개발하기 위해서 자바 객체를 생성하고 서로간의 의존 관계를 연결시키는 작업에 대한 제어권이 누구에게 있었는지를 먼저 생각해보자. 자바가 처음 등장했을 때부터 지금까지 객체를 생성하고 객체간의 의존관계를 제어하는 권한은 우리 개발자들에게 있었다. 아마 대부분의 개발자들이 이처럼 모든 객체에 대한 제어권은 우리에게 있다고 인식해왔고 앞으로도 그렇게 생각하고 있을 것이다. 같은 생각이 일부분 맞는 부분도 있고 그렇지 않은 부분도 있다.

IoC에서 이야기하는 제어권의 역전이란 이처럼 객체의 생성에서부터 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌였다는 것을 의미한다. 그렇다면 Spring 프레임워크 내부에 IoC 개념이 들어 있다는 말인가? 그렇다. Spring 프레임워크도 객체에 대한 생성 생명주기를 관리할 있는 기능을 제공하고 있다. , 컨테이너 기능을 내부에 포함하고 있다는 말이 된다. 같은 이유 때문에 Spring 프레임워크를 Spring 컨테이너, IoC 컨테이너와 같은 용어로 부르는 경우도 종종 있다.

Spring 프레임워크가 등장하면서 Spring 프레임워크의 가장 장점으로 개발자들에게 광고한 것이 앞에서 살펴본 IoC 컨테이너 기능이다. 그러나 지금까지 다룬 내용을 통해서 있듯이 IoC 기능은 Spring 프레임워크가 탄생하기 훨씬 이전부터 사용되던 개념이었다. 그러므로 "IoC 기능을 Spring 프레임워크의 장점이라고 이야기하는 것은 적합하지 않다." 반론을 제기하면서 "새로운 개념을 사용하는 것이 적합하다." 주장한 사람이 Martin Flowler이다. Martin Flowler http://martinfowler.com/articles/injection.html 문서를 통하여 Lightweight 컨테이너들이 이야기하는 IoC Dependency Injection이라는 용어로 사용하는 것이 적합하다고 이야기하고 있다.
Martin Flowler
같은 구분 이후 IoC개념을 글을 쓰는 저자에 따라 다양한 방식으로 분류하고 있다. 아직까지 IoC개념을 체계적으로 분류하고 있지 않은 상태이기 때문에 필자 또한 필자가 생각하는데로 IoC 다음과 같이 분류했다.

IoC 컨테이너를 다시 Dependency Lookup Dependency Injection 두가지로 나누었다. Dependency Injection 다시 의존관계를 연결시키는 방법에 따라서 Setter Injection, Constructor Injection, Method Injection 세가지로 나눌 있다.
추천 (0) 선물 (0명)
IP: ♡.142.♡.226
3,006 개의 글이 있습니다.
제목 글쓴이 날짜 조회
관리자
2003-09-20
11940
관리자
2003-09-20
11488
관리자
2003-09-20
20621
지구인
2010-08-27
19412
지구인
2009-09-07
13734
SOLIDH
2010-01-29
15692
엔죠라이프
2004-10-07
16784
SOLIDH
2009-05-24
4125
SOLIDH
2009-05-23
2229
SOLIDH
2009-05-23
3731
나나
2009-05-18
14332
수병아리
2009-05-18
3092
SOLIDH
2009-04-29
1565
SOLIDH
2009-04-27
1161
SOLIDH
2009-04-26
1318
sinanstn
2009-04-24
2863
뽀글이예용
2009-04-22
2922
SOLIDH
2009-04-20
2099
Exception
2009-04-17
2980
Exception
2009-04-17
2015
Exception
2009-04-17
2880
Exception
2009-04-15
2276
고수고수
2009-04-15
4701
고수고수
2009-04-15
4007
아시오페아
2009-04-01
3763
나키
2009-03-31
6038
Ora
2009-03-30
2206
Ora
2009-03-27
4583
모이자 모바일