[섹션 8. 빈 생명주기 콜백] 인터페이스 InitializingBean, DisposableBean / 인프런 김영한 스프링 핵심 원리 기본편
이번 시간에는 인터페이스로 초기화랑 소멸전 콜백을 받는 방법에 대해서 알아보았다.
지난번에 작성했던 클래스에다 implements InitializingBean 를 추가해서 상속받아준다.
그리고 상속받은 메소드를 override 해준다.
afterPropertiesSet 메소드를 재정의 해주는데 이 메소드는,
프로퍼티가 세팅이 끝나면, 즉, 의존관계 주입이 끝나면 호출해주는 메소드이다.
의존관계 주입이 끝나고 연결해주는 메소드를 호출하도록 한다.
그리고 마찬가지로 DisposableBean을 상속받아준다.
종료하는 disconnect 메소드를 호출하는 메소드를 생성한다.
이렇게 되면 전반적인 흐름은, 스프링 컨테이너가 올라오고 의존관계 주입이 끝나면 afterPropertiesSet 메소드를 호출하고, destory는 빈이 종료될때 호출될 것이다.
그리고 테스트를 돌리면 결과는 위와 같다.
이전 시간에 null로 들어왔던 것과 다르게, url에 잘 들어간 것을 확인할 수 있다.
흐름을 살펴보면, 의존관계 주입이 끝난 이후에 초기화가 되면, afterPropertiesSet에 있는 connect가 호출이 된다.
그리고 스프링 컨테이너가 내려가면서 종료하기 전에 생성된 빈들도 하나씩 죽게 된다.
그 때, destory 메소드가 호출되고 disconnect가 안전하게 호출된다.
그리고 초기화, 소멸 인터페이스의 단점이 있는데,
- 이 인터페이스는 스프링 전용 인터페이스이기 때문에, 해당 코드가 스프링 전용 인터페이스에 의존한다.
- 초기화, 소멸 메소드의 이름을 변경할 수 없다.
- 내가 코드를 고칠 수 없는 외부 라이브러리에 적용할 수 없다.
참고로 인터페이스를 사용하는 초기화, 종료 방법은 스프링 초창기에 나온 방법들이고,
지금은 다음의 더 나은 방법들이 있어서 거의 사용하지 않는다.