반응형
Spring - Bean Definition
(원문 위치 : http://www.tutorialspoint.com/spring/spring_bean_definition.htm )
Application의 뼈대(backbone)을 형성하고 Spring IoC에 의해 관리되어지는 객체를 bean이라고 부른다. Bean은 인스턴트화(instantiated)되어지고, 조립(assembled)되지만 Spring IoC container에 의해 관리되어재는 객체이다. 이러한 bean은 container에 제공하는 설정 metadata로 생성되어진다. 예를들면, XML </bean> 선언의 형태로 이미 이전 예제에서 사용되었다.
Bean 선언은 설정 metadata(Configuration metadata)로 불리우는 정보를 포함한다. Container에 필요한 정보는 아래와 같다.
How to create a bean : 어떻게 bean을 생성하는가?
Bean's lifecycle details : 상세 bean의 lifecycle
Bean's dependencies : bean의 의존관계
위 설정 metadata의 모든것은 각각의 bean 정의를 구성하는 아래 속성으로 표현된다.
Properties | Description |
---|---|
class | 필수 속성. bean을 생성하기 위해 사용되어지는 bean class를 명시. |
name | 이 속성은 유일한 bean ID를 명시. XML 기반 설정 metadata에서 bean ID를 명시하기 위해 'id' 또는 'name' 속성을 사용. |
scope | 특정 bean 선언으로부터 객체가 생성되어지는 범위를 명시. 이후 강좌에서 다시 언급. |
constructor-arg | 의존관계 주입을 위해 사용. |
properties | 의존관계 주입을 위해 사용. 이후 강좌에서 다시 언급. |
autowiring mode | 의존관계 주입을 위해 사용. 이후 강좌에서 다시 언급. |
lazy-initialization mode | lazy-initialized bean은 IoC container가 bean instance를 application 시작이 아닌 처음 호출(first request)에서 생성하는 것을 말함. |
initialization method | Container에 의해 설정된 bean에서 모든 필요한 속성이 설정된 후 호출되는 callback. 이후 강좌에서 다시 언금. |
destruction method | Container가 bean의 소멸(destroy)을 포함할때 사용되는 callback. 이후 강좌에서 다시 언급. |
Spring Configuration Metadata
Spring IoC container는 설정 metadata가 쓰여진 형식으로부터 종합적으로 분리되어진다. Spring container에 설정 metadata를 제공하는 주용 방법은 아래 세가지이다.
XML based configuration file : XML 기반
Annotation-based configuration : 주석(annotation) 기반
Java-based configuration : Java code 기반
어떻게 XML 기반 설정 metadata가 container에 제공되는지는 이전 예제에서 이미 보았지만, lazy initialization, initialization/destruction method를 포함하는 다른 bean을 가진 XML 기반 설정 file의 예를 보자.
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <!-- A simple bean definition --> <bean id="..." class="..."> <!-- collaborators and configuration for this bean go here --> </bean> <!-- A bean definition with lazy init set on --> <bean id="..." class="..." lazy-init="true"> <!-- collaborators and configuration for this bean go here --> </bean> <!-- A bean definition with initialization method --> <bean id="..." class="..." init-method="..."> <!-- collaborators and configuration for this bean go here --> </bean> <!-- A bean definition with destruction method --> <bean id="..." class="..." destroy-method="..."> <!-- collaborators and configuration for this bean go here --> </bean> <!-- more bean definitions go here --> </beans>
[003] HelloWorld Example을 다시한번 보는 것도 좋다.
반응형