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 |