더북(TheBook)

구성 파일에서 빈의 destroy-method 애트리뷰트에 소멸 콜백을 destroy() 메서드로 지정했습니다. 파일 경로 값은 스프링 표현식 언어(SpEL)로 작성됐는데, 플랫폼 간 호환성 확보를 위해 java.io.tmpdir 시스템 프로퍼티와 file.separator 시스템 프로퍼티를 파일 이름인 test.txt 앞에 이어 붙여 작성했습니다. 이 예제 코드를 실행하면 다음과 같은 결과를 출력합니다.

빈을 초기화합니다.
파일 존재여부: true
destroy() 호출 시작
빈을 소멸합니다.
파일 존재여부: false
destroy() 호출 종료

 

보다시피, 스프링은 먼저 초기화 콜백을 호출하며 DestructiveBean 인스턴스는 File 인스턴스를 생성해 새 파일을 만들고 저장합니다. 다음으로 ApplicationContextdestroy()를 호출하면 스프링은 관리 대상 싱글턴 집합을 순회하며 빈에 지정돼 있는 소멸 콜백을 호출합니다. 예제에서는 스프링이 관리하는 빈은 destructiveBean 빈 한 개입니다. 이 소멸 콜백에서 DestructiveBean 인스턴스는 생성된 파일을 삭제하고 파일이 더 이상 존재하지 않는다는 로그 메시지를 출력합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.