2011-11-16 4 views
10

bean이 "prototype"으로 범위를 정할 때 스프링 설명서에 따르면 스프링은 객체의 전체 라이프 사이클을 관리하지 않습니다. 보다 구체적으로는 파기 라이프 사이클 콜백이 호출되지 않습니다. 클라이언트 코드는 필요한 정리 작업을 수행해야합니다. 스프링 문서는 또한이 목적을 위해 커스텀 빈 포스트 프로세서를 사용할 것을 제안한다. 그러나 "BeanPostProcessor"인터페이스는 bean을 초기화하기 전후의 콜백 메소드만을 포함합니다. desctruction 콜백 메소드가 없습니다. 그런 다음 프로토 타입 범위 콩에서 얻은 리소스를 어디에서 어떻게 릴리스 하시겠습니까?Spring : 프로토 타입 범위 Bean을 완전히 종료하는 방법은 무엇입니까?

답변

4

당신이 찾고있는 것은 DestructionAwareBeanPostProcessor입니다, 그것은 BeanPostProcessor의 하위 인터페이스입니다.

사용자는 해당 인터페이스의 새 구현을 직접 만들거나 CommonAnnotationBeanProcessor와 같은 구현 클래스 중 하나를 사용할 수 있습니다.

+1

@Raihan 이것이 맞는지 확실하지 않습니다. 의사는 싱글 톤에만 적용한다고 말합니다. 프로토 타입 빈이 범위를 벗어날 때 Spring이 어떻게 알 수 있을까요? 이 인터페이스 및 특정 메서드에 대한 자세한 내용은 http://static.springsource.org/spring/docs/3.0.x/javadoc-api/에서 확인하십시오. – shrini1000

1

프로토 타입 범위의 Bean을 종료하는 유일한 방법은 리소스를 폐기하기 위해 명시 적으로 "파괴"방법 중 일부를 호출하는 것입니다. Phantom References을 사용할 수도 있습니다. Here은 다양한 유형의 참조에 대한 추가 정보입니다.

관련 문제