Home 스프링 프레임워크 - 2.1. IoC 컨테이너: 3. 빈 개요
Post
Cancel

스프링 프레임워크 - 2.1. IoC 컨테이너: 3. 빈 개요

스프링 프레임워크 문서 읽기
    챕터 1. 개요
    챕터 2. 핵심 기술
      2.1. IoC 컨테이너
        2.1.1 스프링 IoC 컨테이너와 빈즈Beans에 대한 소개
        2.1.2. 컨테이너 개요
        2.1.3. 빈Bean 개요
        2.1.4. 의존 관계Dependencies
        2.1.5. 빈 스코프Bean Scopes
    챕터 5. 웹 서블릿 스택
      5.1. 스프링 웹 MVC
        5.1.3. 애너테이션Annotated 컨트롤러
4/7



1.3. 빈Bean 개요

    스프링 IoC 컨테이너는 하나 이상의 빈을 관리한다. 이 빈즈는 개발자가 컨테이너에 제공한 설정 메타데이터를 통해 생성된다.

    컨테이너 내부에는 이러한 빈 정의들이 BeanDefinition 객체로서 표현되어 있다. 그리고 아래와 같은 메타데이터들도 포함되어 있다.

  • 패키지 단위의 클래스명
    : 일반적으로, 정의가 이뤄진 빈의 실제 클래스 구현이 있다.
  • 빈이 역할에 대한 설정 정보들
    : 빈이 컨테이너 안에서 무엇을 해야하는지 정해져 있다.
  • 해당 빈에 요구되는 다른 빈에 대한 참조 사항
    : 이러한 참조를 컬래버레이터 또는 의존관계(의존성)라고도 부른다.
  • 새로 생성되는 객체에서 설정해야 할 다른 사항들
    : 예를 들어, 커넥션 풀을 관리하는 빈에서는 사용 가능한 연결들의 수나 풀의 크기 제한과 같은 것들을 들 수 있다.

이러한 메타데이터는 각각의 빈 정의를 이루는 속성 정보들a set of properties로 변환된다. 속성들로는 아래의 테이블을 참조하면 된다.

PropertyExplained in…
ClassInstantiating Beans
NameNaming Beans
ScopeBean Scopes
Constructor argumentsDependency Injection
PropertiesDependency Injection
Autowiring modeAutowiring Collaborators
Lazy initialization modeLazy-initialized Beans
initialization methodInitialization Callbacks
Destruction methodDestruction Callbacks
    빈 메타데이터, 그리고 기본적으로 제공되는 싱글톤 인스턴스들은 최대한 일찍 등록되어야 한다. 왜냐하면 자동주입, 그리고 다른 인트로스펙션 단계에서 컨테이너가 적절한 판단을 내릴 수 있도록 하기 위해서이다. 존재하는 메타데이터나 싱글톤 인스턴스를 오버라이딩 하는 건 어떤 부분에선 지원이 되는 반면, 런타임 단계에서 새로운 빈을 등록하는 건 공식적으로 지원되지 않을 뿐더러 이 경우에 빈 컨테이너에 대하여 동시 접근 예외concurrent access exceptions나 모순된 상태inconsistent state(혹은 두 가지 모두)가 발생할 수 있기 때문이다.

1.3.1. 빈즈 명명Naming Beans

① 빈 정의 이외에 빈 alias 명명</span>

1.3.2. 빈즈 인스턴스화하기Instantiating Beans

    빈 정의는 하나 이상의 객체를 생성하는 것에 관한 필수 레시피이다. 그리고 컨테이너는 요청을 받았을 때 이 레시피를 통해 특정 이름의 빈을 참조하며, 바로 이 빈 정의에 의해 캡슐화된 설정 메타데이터를 사용하여 실제 객체를 생성(또는 취득)한다.

① 생성자를 통한 인스턴스화
② 정적 팩토리 메서드를 통한 인스턴스화
③ 정적 팩토리 메서드를 통한 인스턴스화
④ 빈즈의 런타임 시 타입 결정
Contents