반응형

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 정의를 구성하는 아래 속성으로 표현된다.
PropertiesDescription
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을 다시한번 보는 것도 좋다.


반응형

+ Recent posts