본문 바로가기

토비의 스프링3/1장_오브젝트와 의존관계

1장 오브젝트와 의존관계(2) - IoC(Inversion Of Control)

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

1. 제어의 역전(IoC) - Inversion of Control

 

a. 팩토리

-. 객체의 생성 방법을 결정하고 그렇게 만들어진 오브젝트를 돌려주는 오브젝트를 흔히 팩토리라 부른다.

 

b. 설계도로서의 팩토리

-. 어떤 오브젝트가 어떤 오브젝트를 사용하는지를 정의해놓은 코드

 

2. 제어권의 이전을 통한 제어관계 역전

 

-. 제어의 역전이라는건, 간단히 프로그램의 제어 흐름 구조가 뒤바뀌는 것이라 설명할 수 있다.

-. 모든종류의 작업을 사용하는쪽에서 제어하는구조다.

-. 제어의 역전에서는 오브젝트가 자신이 사용할 오브젝트를 선택하지 않고, 생성하지도 않는다. 또 자신도 어떻게 만들어지고 어디서 사용되는지 알 수 없다

-. 제어의 역전에서는 프레임워크 또는 컨테이너와 같이 애플리케이션 컴포넌트의 생성과 관계설정, 사용, 생명주기 관리 등을관장히는 존재가 필요하다.

 

3. 애플리케이션 컨텍스트의 동작방식

 

-. IoC 컨테이너, 스프링 컨테이너 또는 빈 팩토리라고 부른다.

-. 애플리케이션 컨텍스트는 ApplicationContext 인터페이스를 구현하는데 ApplicationContext는 빈 팩토리가 구현하는 BeanFactory 인터페이스를 상속했으므로 애플리케이션 컨텍스트는 일종의 빈팩토리다.

-. 생성정보와 연관관계 정보를 별도의 설정정보를 통해 얻고 때로는 외부의 오브젝트 팩토리에 그 작업을 위임하고 그 결과를 가져다가 사용하기도 한다.

 

어플리케이션 컨텍스트가 동작하는 방식

 

 

 

 

 애플리케이션 컨텍스트의 장점

a. 클라이언트는 구체적인 팩토리 클래스를 알 필요가 없다.

-. 애플리케이션 컨텍스트를 이용하면 일관된 방식으로 원하는 오브젝트를 가져올 수 있다.

b. 애플리케이션 컨텍스트는 종합 loC 서비스를 제공해준다.

-. 애플리케이션 컨텍스트의 역할은 단지 오브젝트 생성과 다른 오브젝트와의 관계설정만이 전부가 아니다.

오브젝트가 만들어지는 방식, 시점과 전략을 다르게 가져갈수도 있고, 이에 부가적으로 자동생성, 오브젝트에 대한 후처리, 정보의 조합, 설정방식의 다변화, 인터셉팅 등 오브젝트를 효과적으로 활용할 수 있는 다양한 기능을
제공한다.

또, 빈이 사용할 수 있는 기반기술 서비스나 외부 시스템과의 연동 등을 컨테이너 차원에서 제공해주기도 한다.

c. 애플리케이션 컨텍스트는 빈을 검색하는 다양한 방법을 제공한다.

 

4. 스프링 IoC의 용어정리

 

a. 빈(bean)

-. 빈 또는 빈 오프젝트는 스프링이 IoC 방식으로 관리하는 오브젝트라는 뜻이다. (관리되는 오브젝트(managed object))

-. 스프링이 직접 그 생성과 제어를 담당하는 오브젝트만을 빈이라고 부른다.

b. 빈 팩토리(bean factory)

-. 스프링의 IoC를 담당하는 핵심 컨테이너를 가리킨다.

-. 빈을 등록하고, 생성하고, 조회하고 돌려주고, 그 외에 부가적인 빈을 관리하는 기능을 담당한다.

c. 애플리케이션 컨텍스트(application context)

-. 빈 팩토리를 확장한 IoC 컨테이너다.

-. 빈을 등록하고 관리하는 기본적인 기능은 빈 팩토리와 동일

-. 빈 팩토리라고 부를 때는 주로 빈의 생성과 제어의 관점에서 이야기하는 것이고, 애플리케이션 컨텍스트라고 할 때는 스프링이 제공히는 애플리케이션 지원 기능을 모두 포함해서 이야기하는 것이라고 보면 된다.

-. ApplicationContext 라고 적으면 애플리케이션 컨텍트스가 구현해야 하는 기본 인터페이스를 가리키는 것이기도 하다.
-. ApplicationContext는 BeanFactory를 상속한다.

d. 컨테이너(container )또는 loC 컨테이너