• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

질문드립니다.

22.04.09 10:38 작성 조회수 108

0

<bean id="t1" class="kr.co.softcampus.beans.TestBean1" lazy-init="true" 

init-method="bean1_init" destroy-method="bean1_destroy" scope="prototype" />

해당내용으로 beans.xml 설정 후 ctx.close( ); 를 호출하면,  bean1_destroy메서드는 호출이 안되는것으로 확인되는데 왜그럴까요! 싱글톤일땐 정상호출 되지만, 프로토타입으로하니깐 각각 객체 생성되어, init메서드는 정상호출이되고 destroy메서드만 호출이안되서 질의드립니다.

답변 1

답변을 작성해보세요.

0

자바에서 객체는 가비지 컬렉션이 동작할 때 소멸됩니다. 

객체를 참조하는 변수나 컨테이너 등이 없을 경우 객체는 소멸의 대상이 되고

바로 소멸되지는 않습니다.

프로그램이 완전히 종료되거나 가비지 컬렉션이 동작해야 소멸이 되는데

이때, destroy 메서드가 호출된다고 생각하시면 됩니다.

사실 이 때문에 자바에서는 객체 소멸과 관계된 메서드는 사용하지 않는 편이기도 합니다.