본문 바로가기
강의 실습/스프링 핵심 원리 - 기본편

인터페이스 InitializingBean, DisposableBean

by jint 2026. 5. 3.

- src/test/java/hello/core/lifecycle/NetworkClient.java

public class NetworkClient implements InitializingBean, DisposableBean {
    
    ...

    public NetworkClient() {
        System.out.println("생성자 호출, url = " + url);
        // connect();
        // call("초기화 연결 메시지");
    }

    ...

    // 서비스 종료시 호출
    public void disConnect() {
        System.out.println("close: " + url);
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("NetworkClient.afterPropertiesSet");
        connect();
        call("초기화 연결 메시지");
    }

    @Override
    public void destroy() throws Exception {
        System.out.println("NetworkClient.destroy");
        disConnect();
    }

}


· InitializingBean : afterPropertiesSet() 메서드로 초기화를 지원
· DisposableBea : destroy() 메서드로 소멸을 지원

- 콘솔

생성자 호출, url = null
NetworkClient.afterPropertiesSet
connect: http://hello-spring.dev
call: http://hello-spring.dev, message = 초기화 연결 메시지
14:03:49.936 [Test worker] DEBUG o.s.c.a.AnnotationConfigApplicationContext --Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@3241713e, started on Sun May 03 14:03:49 KST 2026
NetworkClient.destroy
close: http://hello-spring.dev


초기화 메서드가 의존관계 주입 완료 후 적절하게 호출됨
스프링 컨테이너 종료가 호출되자 소멸 메서드가 호출됨

초기화, 소멸 인터페이스 단점)
#1 스프링 전용 인터페이스로, 해당 코드(스프링 빈)가 스프링 전용 인터페이스에 의존
#2 초기화/소멸 메서드 이름 변경 불가
#3 코드를 고칠 수 없는 외부 라이브러리에 적용 불가 (외부 라이브러리 코드를 직접 수정하여 인터페이스를 구현할 수 없기 때문)

* 참고
인터페이스를 사용한 초기화, 종료 방법은 스프링 초창기에 나온 방법으로, 현재 더 나은 방법들이 있어서 거의 사용하지 않는다.


참고링크 : https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8?cid=325969

 

스프링 핵심 원리 - 기본편| 김영한 - 인프런 강의

현재 평점 5.0점 수강생 49,584명인 강의를 만나보세요. 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다. 스프링 기본 기능, 스프

www.inflearn.com

댓글