인프런 커뮤니티 질문&답변
질문드립니다.
작성
·
185
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메서드만 호출이안되서 질의드립니다.
퀴즈
스프링에서 IoC(Inversion of Control)의 핵심 원칙은 무엇인가요?
개발자가 프로그램 흐름을 완벽하게 제어합니다.
프레임워크가 프로그램의 객체 생성 및 흐름을 관리합니다.
객체가 자신의 의존성을 스스로 생성합니다.
메서드가 다른 메서드를 직접 호출하여 실행 순서를 결정합니다.
답변 1
0
소프트캠퍼스
지식공유자
자바에서 객체는 가비지 컬렉션이 동작할 때 소멸됩니다.
객체를 참조하는 변수나 컨테이너 등이 없을 경우 객체는 소멸의 대상이 되고
바로 소멸되지는 않습니다.
프로그램이 완전히 종료되거나 가비지 컬렉션이 동작해야 소멸이 되는데
이때, destroy 메서드가 호출된다고 생각하시면 됩니다.
사실 이 때문에 자바에서는 객체 소멸과 관계된 메서드는 사용하지 않는 편이기도 합니다.





