-
카테고리
-
세부 분야
백엔드
-
해결 여부
미해결
빈 소멸
23.12.13 01:02 작성 조회수 214
0
public class SingletonTest {
@Test
void singletonBeanFind(){
AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(SingletonBean.class);
SingletonBean singletonBean1 = ac.getBean(SingletonBean.class);
SingletonBean singletonBean2 = ac.getBean(SingletonBean.class);
System.out.println("singletonBean1 = " + singletonBean1);
System.out.println("singletonBean2 = " + singletonBean2);
ac.close();
System.out.println("singletonBean2 = " + singletonBean2);
}
@Scope("singleton")
static class SingletonBean {
@PostConstruct
public void init(){
System.out.println("singletonBean.init");
}
@PreDestroy
public void desrtoy(){
System.out.println("singletonBean.desrtoy");
}
}
}
스프링 컨테이너가 close() 메서드로 종료될 시점에 컨테이너는 빈 객체의 소멸을 처리한다라고 알고있습니다. 그런데 close() 이후에 singletonBean의 참조변수를 출력해보면 null이 아니라 빈의 참조값이 출력되는 이유가 먼가요? 제가 잘못 알고있는 부분이 궁금합니다
아래는 Test 결과 입니다
singletonBean.init
singletonBean1 = hello.core.scope.SingletonTest$SingletonBean@530712d
singletonBean2 = hello.core.scope.SingletonTest$SingletonBean@530712d
singletonBean.desrtoy
singletonBean2 = hello.core.scope.SingletonTest$SingletonBean@530712d
답변을 작성해보세요.
답변 1