[다섯번째] Spring 사내 스터디

2012. 12. 3. 13:58Study/Study group

반응형

참고 URL :

2012/10/23 - [Study/Study group] - [첫번째] Spring 사내 스터디

2012/10/31 - [Study/Study group] - [두번째] Spring 사내 스터디

2012/11/12 - [Study/Study group] - [세번째] Spring 사내 스터디

2012/11/26 - [Study/Study group] - [네번째] Spring 사내 스터디



 



- 스터디 범위
  용수철 1기
  토비 vol 2, 1장

  용수철 2기
  토비 vol1. 1장


Review

1장. IoC 컨테이너와 DI

스프링 애플리케이션은 오브젝트의 생성과 관계설정, 사용, 제거 등의 작업을 애플리케이션 코드 대신
독립된 컨테이나거 담당한다. 이를 컨테이너가 코드 대신 오브젝트에 대한 제어권을 갖고 있다고 해서
IoC라고 부른다. 그래서 스프링 컨테이너를 IoC컨테이너라고도 한다.

Think :




또한, 스프링에선 IoC를 담당하는 컨테이너를 빈 팩토리 또는 애플리케이션 컨텍스트라고 부르기도 한다.
"BeanFactory와 ApplicationContext는 각각 인터페이스로 정의 되어있다."
그래서 실제로 스프링 컨테이너 또는 IoC컨테이너라고 말하는 것은 바로 이 ApplicationContext 인터페이스를 구현한 클래스의 오브젝트이다.

ex) StaticApplicationContext ac = new StaticApplicationContext();
위의 코드는 IoC 컨테이너가 만들어진 것인가??     

IoC가 동작하려면?

스프링의 설정 메타정보는 XML이 아니다.
스프링의 설정 메타정보는 BeanDefinition 인터페이스로 표현되는 순수한 추상 정보이다.
스프링의 메타정보는 특정한 파일 포맷이나 형식에 제한되거나 종속되지 않는다.
대신 XML 이든 소스코드 애노테이션이든 자바코드이든 프로퍼티 파일이든 상관 없이 BeanDefinition으로
정의되는 스프링의 설정 메타정보의 내용을 표현한 것이 있다면 무엇이든 사용 가능 하다.
단, 원본의 포맷과 구조, 자료의 특성에 맞게 읽어와 BeanDefinition 오브젝트로 변환해주는 BeanDefinitionReader 가 있으면 된다. BeanDefinitionReader도 인터페이스이다.^-^good~

[그림1] IoC 컨테이너를 통해 애플리케이션이 만들어지는 방식


일반적으로 설정 메타정보는 XML파일이나 애노테이션 같은 외부 리소스를 전용리더가 읽어서 BeanDefinition 메타정보를 생설 할 수 있다.

위의 그림에서 메타정보 리소스(XML, 애노테이션, 자바코드) 이다. 아래의 그림2를 다시 보도록 하자.

[그림2] 컨테이너가 활용하는 빈 설정 메타정보



IoC 컨테이너 계층구조
 - 부모, 자식(계층 구조)
 - 빈 검색 시 1) 자기자신 2) 부모 애플리케이션의 빈까지 모두 검색
    단, 자식 컨텍스트에게는 요청하지 않음.(검색 X)

[그림3] 스프링 웹애플리케이션의 다양한 구성 방법


역시나 계층구조로 되어있다. 왜 이렇게 계층구조로 만들까?



Mr. Gong> servlet 2.5
 









반응형