Spring Framework를 사용하면 Bean을 등록하여 객체를 사용하게된다.
일반적인 경우에는 Tomcat 혹은 프로젝트가 시작할 때 Bean 등록이 시작되고 초기화되는 경우가 많을 겁니다.
항상 개발을 하다보면 뭔가 커스텀하게 추가 작업을 진행한다던지? 끝날때 뭘한다던지 하고 싶은 일들이 생기기 마련이죠.
이럴때 Bean의 옵션으로 초기화 시점이나 Bean이 제거될 때 하고 싶은 기능을 명시할 수 있습니다.
init-method 옵션
1번 : XML 설정
<bean id="sampleTaky" class="com.taky.sample.service.SampleTaky" init-method="init">
public void init() {
model = fooService.getModel();
}
2번 : Java 설정 (Spring 2.5이상 가능)
@PostConstruct
public void init() {
model = fooService.getModel();
}
- 기능 : Bean이 생성된 후 콜백으로 호출되는 메서드를 선언합니다.
lazy-init 옵션
XML 설정
<bean id="sampleTaky" class="com.taky.sample.service.SampleTaky" lazy-init="true">
- 값은 true/false (디폴트 : false) - 기능 : Bean을 최초로 호출할 때 초기화합니다. 최초 호출 시점에 따라 초기화 시점이 다름
하위 Bean들 전체에 lazy-init을 하고 싶다면?
<beans default-lazy-init="true">
</beans>
- 상위에 옵션을 줄 수 있습니다.
destroy-method 옵션
1번 : XML 설정
<bean id="sampleTaky" class="com.taky.sample.service.SampleTaky" init-method="init" destroy-method="destory">
public void destroy() {
logger.debug("#### 객체 파괴");
}
2번 : Java 설정 (Spring 2.5이상 가능)
@PreDestroy
public void destroy() {
logger.debug("#### 객체 파괴");
}
참고 1. PreDestroy, PostConstruct 어노테이션은 Spring 2.5 버전이상부터 사용 가능합니다. As of version 2.5, the Spring Framework corenow provides support for the following JSR-250 annotations: @Resource @PostConstruct @PreDestroy 2. bean의 preDestroy, destory bean xml 설정의 호출은 ServletContextListener의 contextDestroyed보다 이후에 수행됩니다!
'Java > Spring' 카테고리의 다른 글
SpringBoot Profile(환경별 설정 파일 구별) (0) | 2016.06.07 |
---|---|
SpringBoot JSP를 Jar에 넣기 (0) | 2016.06.01 |
SpringBoot JSP View 설정하기 (1) | 2016.05.30 |
[Bean] component-scan? (0) | 2016.04.11 |
[SSL] Spring Boot를 이용해 HTTPS 연동하기 (개인 서명) (1) | 2016.02.23 |