Computer Science/Spring

#4 Bean 객체의 life-cycle 관리

꿈꾸는어린이 2018. 5. 14. 16:17


Bean 객체의 life-cycle 관리

Spring container의 역할

  • container는 bean객체의 생성, 초기화, 소멸 등 life-cycle을 관리함

  • 각 bean에 대해 life-cycle 관련 method들을 호출하여 실행함

  • life-cycle관련 interface의 callback method는 적절한 시점에 호출 실행

    • BeanNameAware : <bean>의 id/name 속성에 지정된 값 전달

    • BeanFactoryAware : bean객체에 bean을 관리하는 BeanFactory 객체 전달

    • InitializingBean

      • bean객체 생성 및 property 초기화(DI) 이후 호출

      • 주로 property 값 설정 결과 검증 위해 사용

      • bean의 custom init-method로 대체 가능

    • DesposableBean

      • bean 객체 제거 전에 호출

      • bean이 사용하던 자원 반납 등을 수행

      • bean의 custom destroy-method 로 대체 가능

  class Instrumentalist implements Performer{
..
 public void tuneInstrument(){
instrument.tune();
}
 
 public void cleanInstrument(){
   instrument.clean();
}
}

//xml
<bean id="kenny" class="#"
init-method = "tuneInstrument"
destroy-method = "cleanInstrument"
p:song = "Jingle Bells" p:instrument-ref="piano" />



외부 설정 Property

  • bean설정 등에 사용되는 정보를 외부 환경변수나 file등에 별도의 property로 설정하고 사용

    (여기저기 흩어져 있는 데이터를 하나의 property file로 )

  • 개발, 운영 환경에 따라 다른 정보를 이용할 때 유용

  • <context:property-placeholder /> 사용

  • property file에 정의된 property는 ${name} 으로 참조

  //Property file, 외부 하나의 파일로 만듦
jdbc.driver = com.mysql.jdbc.Driver
jdbc.username = springbook
...

//spring 설정 파일
<context:property-placeholder location="classpath:/db.properties" />
 
<bean id="connProvider" class="#">
<property name="jdbcDriver" value="${jdbc.driver}" />
//property file에 정의된 값을 참조하여 치환
//값을 직접 넣어줘도 되지만 수정 시 번거롭기 때문에 property 파일 참조
</bean>
  • <context:property-placeholder /> tag가 두 번 이상 사용될 경우, 첫 번째 tag에 지정된 file만 load됨


'Computer Science > Spring' 카테고리의 다른 글

#6 Command 객체 이용한 Form 전송 처리  (2) 2018.05.25
#5 Spring MVC 구조  (0) 2018.05.25
#3 Spring DI : auto-wiring, annotation 기반  (0) 2018.05.14
#2 Spring DI - xml 기반  (0) 2018.05.14
#1 Spring Framework  (0) 2018.05.13