2011-11-16 10 views
10

Según la documentación de Spring, cuando un bean se define como "prototipo", el resorte no administra el ciclo de vida completo de sus objetos. Más específicamente, las devoluciones de ciclo de vida de destrucción no son llamadas. El código del cliente debe hacer las limpiezas requeridas. La documentación de primavera también sugiere utilizar un postprocesador de frijol personalizado para este propósito. Pero la interfaz "BeanPostProcessor" solo incluye métodos de devolución de llamada para antes y después de la inicialización de los beans. No hay un método para la devolución de llamada de desctrucción. Entonces, ¿dónde y cómo liberar los recursos obtenidos por medio de un prototipo de frijoles?Spring: ¿Cómo terminar de forma limpia los granos con un diseño de prototipo?

Respuesta

4

Lo que está buscando es DestructionAwareBeanPostProcessor, es una interfaz secundaria de BeanPostProcessor.

Puede crear una nueva implementación de esa interfaz usted mismo, o utilizar una de sus clases de implementación, como CommonAnnotationBeanProcessor.

+1

@Raihan No estoy seguro de si esto es correcto. El documento dice que se aplica solo a Singletons, lo cual tiene sentido; porque, ¿cómo sabría Spring cuándo un prototipo de frijol queda fuera del alcance? Para obtener detalles de esta interfaz y su método específico, consulte: http://static.springsource.org/spring/docs/3.0.x/javadoc-api/ – shrini1000

1

La única manera limpia de terminar el bean con prototipo es llamar explícitamente algunos de sus métodos "destroy" para disponer de los recursos. También puede usar Phantom References. Here es más información sobre diferentes tipos de referencias.

Cuestiones relacionadas