2011-11-16 11 views
10

In base alla documentazione Spring quando un bean ha ambito come "prototipo" spring non gestisce il ciclo di vita completo dei suoi oggetti. Più specificamente, le callback del ciclo di vita della distruzione non vengono chiamate. Il codice cliente deve eseguire i clean up richiesti. La documentazione di primavera suggerisce anche di utilizzare un postprocessore di bean personalizzato per questo scopo. Ma l'interfaccia "BeanPostProcessor" include solo i metodi di callback per prima e dopo l'inizializzazione dei bean. Non esiste un metodo per la richiamata di istruzioni. Quindi dove e come rilasciare le risorse ottenute dai bean con scope prototipo?Spring: come terminare in modo pulito i bean con scope prototipo?

risposta

4

Quello che stai cercando è DestructionAwareBeanPostProcessor, è una sotto-interfaccia di BeanPostProcessor.

È possibile creare autonomamente una nuova implementazione di tale interfaccia oppure utilizzare una delle sue classi di implementazione, ad esempio CommonAnnotationBeanProcessor.

+1

@Raihan Non sono sicuro se questo è corretto. Il documento dice che si applica solo a Singletons, il che ha senso; perché come saprebbe Spring quando un fagiolo prototipo esce dal campo di applicazione? Per i dettagli di questa interfaccia e il suo metodo specifico, consulta: http://static.springsource.org/spring/docs/3.0.x/javadoc-api/ – shrini1000

1

L'unico modo pulito per terminare il bean con scope prototipo è chiamare esplicitamente alcuni dei suoi metodi "destroy" per disporre le risorse. È inoltre possibile utilizzare Phantom References. Here è più informazioni su diversi tipi di riferimenti.

Problemi correlati