Bean Life Cycle 콜백 중에서 InitializingBean과 DisposableBean 인터페이스를 사용하거나 XML 설정에서 bean 태그 속성 중에 init-method와 destroy-method 을 사용하여 특정 메소드를 생성자가 호출 된 후(초기화 이후)나 객체가 소멸되기 전에 실행할 메소드를 지정할 수 있었습니다. 

이것에 대한 또 다른 대안이자 JSR-250 라이프사이클 애노테이션 표준을 따르는 @PostConstruct와 @PreDestroy 애노테이션이 Spring 2.1에 추가되었습니다.

public class CachingMovieLister {

    @PostConstruct
    public void populateMovieCache() {
        // populates the movie cache upon initialization...
    }
    
    @PreDestroy
    public void clearMovieCache() {
        // clears the movie cache upon destruction...
    }
    
}

사용법은 위 처럼 더욱 간편해 졌습니다.

정리하다 보니 궁금한 것이 생겼는데 애노테이션에서도 설정하고 XML에서도 설정을 하면 어떻게 될지 입니다.
그래서 예제를 만들어 돌려보았습니다.

public class SimpleMovieLister {

    public void initMethod(){
        System.out.println("initMetod");
    }

    @PostConstruct
    public void postConstuct(){
        System.out.println("postConstruct");
    }

}

    <bean name="lister" class="whiteship.SimpleMovieLister"
        init-method="initMethod" />

init-method 속성도 사용하고 @PostConstruct 애노테이션도 사용하면 다음과 같이 @PostConstruct가 먼저 적용되는 것을 확인할 수 있었습니다.

사용자 삽입 이미지


출처  - http://whiteship.tistory.com/tag/@PostConstruct%20%EC%95%A0%EB%85%B8%ED%85%8C%EC%9D%B4%EC%85%98




Posted by linuxism
,