스프링 빈(Spring Bean)
- 스프링에서 애플리케이션의 중추(backbone)가 되고, 스프링 IoC 컨테이너에 의해 관리되는 객체(objects)를 빈(beans)이라고 부름.
[1]Anchor body_ref_01 body_ref_01 - 빈은 인스턴스화하고, 결집된 객체이며, 스프링 IoC 컨테이너에 의해 관리됨.
- 빈은 애플리케이션의 수많은 객체 중 하나임.
- 빈은 컨테이너에 의해 사용되는 설정 메타데이터(configuration metadata) 안에 빈과 빈 사이의 의존성이 반영됨.
개요
스프링 IoC 컨테이너는 하나 이상의 빈을 관리함.
이러한 빈은 컨테이너에 제공한 설정 메타데이터로 생성됨. (예. XML 기반의 설정 메타데이터에서 있는 <bean/> 정의)
컨테이너 내부에서 이러한 빈 정의는 (다른 정보를 포함하는) BeanDefinition 객체로 나타내고, 다음 메타데이터를 포함하고 있음.
- 패키지를 포함한(package-qualified) 클래스명 : 일반적으로 빈의 실제 구현 클래스가 정의됨.
- 빈의 행동에 대한 설정 요소. 컨테이너에서 빈이 어떻게 동작해야 하는가에 대한 상태(범위, 라이프사이클 콜백 등)
- 빈이 동작하는 데 필요한 다른 빈들에 대한 참조. 이러한 참조를 협력자(collaborators) 또는 의존성(dependencies)이라도 함.
- 새로 생성된 객체에 설정해야 하는 그 외 설정값. 예를 들어 커넥션 풀을 관리하는 빈에서 사용해야 하는 커넥션의 수나 풀의 용량 제한 등임.
이 메타 데이터는 각각의 빈을 정의하는 프로퍼티 세트로 변환됨.
Tip | ||
---|---|---|
| ||
빈 정의 프로퍼티에 대해서는 아래 소스를 참고하자. |
빈 정의
프로퍼티 | 설명 |
---|---|
class | 빈으로 만들 클래스 |
name | 식별자 |
scope | 빈의 범위 |
constructor arguments | 종속성 주입(생성자) |
properties | 종속성 주입(Setter) |
autowiring mode | 종속성 주입(자동주입) |
lazy-initialization mode | 빈 생성을 늦춤(시작시가 아닌 첫 호출시) |
initialization method | 빈이 생성되었을 때 호출하는 콜백 메서드 |
destruction method | 빈이 소멸되었을 때 호출하는 콜백 메서드 |
스프링 컨테이너 외부에서 생성한 객체 등록
ApplicationContext 구현체는 특정 빈을 생성하는 방법에 대한 정보가 들어있는 빈 정의 외에도 사용자가 컨테이너 외부에서 생성한 기존 객체의 등록을 허용함.
getBeanFactory() 메서드로 ApplicationContext의 BeanFactory에 접근해서 이러한 객체들을 등록함.
getBeanFactory() 메서드는 BeanFactory를 구현한 DefaultListableBeanFactory를 리턴함.
DefaultListableBeanFactory는 registerSingleton (..) 및 registerBeanDefinition (..) 메소드를 통해 이러한 등록을 지원함.
하지만 일반적인 애플리케이션은 메타데이터 빈 정의를 통해 정의된 빈으로만 동작함.
Warning | ||
---|---|---|
| ||
|
...
Anchor | ||||
---|---|---|---|---|
|