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 컨테이너
'토비의 스프링3 > 1장_오브젝트와 의존관계' 카테고리의 다른 글
1장 오브젝트와 의존관계(5) - XML 설정 (0) | 2016.04.28 |
---|---|
1장 오브젝트와 의존관계(4) - 의존관계주입(Dependency Injection) (0) | 2016.04.27 |
1장 오브젝트와 의존관계(3) - 싱글톤 & 스코프 (0) | 2016.04.08 |
1장 오브젝트와 의존관계(1) - 스프링 (0) | 2016.02.01 |