반응형
스프링에서는 스프링이 제어권을 가지고 직접 만들고 관계를 부여하는 오브젝트를 빈(bean)이라고 부른다.
(자바빈 또는 엔터프라이즈 자바빈EJB에서 말하는 빈과 비슷한 오브젝트 단위의 어플리케이션 컴포넌트)
스프링에서는 빈의 생성과 관계설정 같은 제어를 담당하는 IoC오브젝트를 빈 팩토리(bean factory)라고 부른다. 빈 팩토리보다는 이를 좀 더 확장한 애플리케이션 컨텍스트(application context)를 주로 사용한다.
스프링 IoC의 용어 정리
빈(bean)
- 스프링이 IoC방식으로 관리하는 오브젝트라는 뜻(스프링이 직접 생성과 제어를 담당하는 오브젝트만을 빈이라고 부른다.)
빈 팩토리(bean factory)
- IoC를 담당하는 핵심 컨테이너를 가리킨다. 빈을 등록하고, 생성하고, 조회하고 돌려주고, 그 외에 부가적인 빈을 관리하는 기능을 담당 (보통 이를 확장한 애플리케이션 컨텍스트를 이용)
애플리케이션 컨텍스트(application Context)
- 빈 팩토리를 확장한 IoC 컨테이너
- ApplicationContext는 BeanFacotry를 상속한다.
설정정보/설정 메타정보(configuration metadata)
- 스프링의 설정정보란 애플리케이션 컨텍스트 또는 빈 팩토리가 IoC를 적용하기 위해 사용하는 메타정보를 말한다.
싱글톤 레지스트리로서의 애플리케이션 컨텍스트
애플리케이션컨텍스트는 IoC 컨테이너면서 동시에 싱글톤을 저장하고 관리하는 싱글톤 레지스트리(singleton registry)이기도 하다.
(별다른 설정을 하지 않으면 모든 싱글톤으로 만들어짐)
서버애플리케이션과 싱글톤
스프링이 자주 적용되는 대상이 자바 엔터프라이즈 기술을 사용하는 서버환경이기 때문에 사용
=> 서버환경에서 그 가치가 있다.(높은성능 필요)
싱글톤 구현 방식은 여러가지 단점이 있기 때문에, 스프링은 직접 싱글톤 형태의 오브젝트를 만들고 관리하는 기능을 제공한다.(싱글톤 레지스트리)
스프링 컨테이너는 싱글톤을 생성하고, 관리하고, 공급하는 싱글톤 관리 컨테이너이기도 하다.
싱글톤과 오브젝트의 상태
싱글톤은 멀티스레드 환경이라면 여러 스레드가 동시에 접근해서 사용할 수 있다. 따라서 상태 관리에 주의를 기울여야 한다.
스레드들이 동시에 싱글톤 오브젝트의 인스턴스 변수를 수정하는 것은 매우 위험하다.
=> 따라서 싱글톤은 기본적으로 인스턴스 필드의 값을 변경하고 유지하는 상태유지(stateful)방식으로 만들지 않는다.
반응형
'프로그래밍 노트 > SPRING' 카테고리의 다른 글
[Spring] IoC(InversionOfControl) 컨테이너 3 (0) | 2018.08.08 |
---|---|
[Spring] IoC(InversionOfControl) 컨테이너 2 (0) | 2018.08.08 |
[Spring] 스프링프레임워크의 특징 (0) | 2018.08.08 |
[Spring] Spring AOP(Aspect Oriented Programming)1 (0) | 2018.07.01 |
[Spring] 필터(filter)와 인터셉터(interceptor)의 차이 (0) | 2018.06.29 |