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?
10
A
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
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
- 1. Spring - Come posso distruggere i miei fagioli con scope prototipo?
- 2. Creare prototipo di bean Spring con annotazioni?
- 3. Come terminare un thread in un bean con scope vista?
- 4. Spring ApplicationContext Bean Scope
- 5. Quando @Predestroy sarà invocato su bean con scope prototipo?
- 6. Come sovrascrivere un bean con scope per i test?
- 7. Ambito di scope @ (prototipo) senza creazione di nuovo bean
- 8. Spring pubblica i bean in modo thread-safe?
- 9. bean gestito con scope sessione vs bean stateful vs httpsession
- 10. Cercando di distruggere i bean nell'ordine corretto con Spring
- 11. Spring bean destroy-method, singleton e prototype scope
- 12. È possibile recuperare un bean Spring con ambito prototipo senza utilizzare ApplicationContextAware
- 13. Come ottenere tutti i bean con scope di sessione in JSF 2?
- 14. Come Spring Singleton Scope è Garbage Collection?
- 15. Inizializzazione bean bean Spring
- 16. In attesa di terminare tutti i thread in Spring Integration
- 17. In strato SpringMVC Controller, @Scope ("prototipo") vs @Scope ("Singleton")
- 18. Come interagire con Spring bean Handle
- 19. Autowiring richiesta di scope con scope nei bean con ambito applicativo
- 20. Inject Spring bean in groovy bean
- 21. come ricollegare i bean Spring singleton alla deserializzazione
- 22. Utilizzo di Session Scope in Spring Beans
- 23. Fare in modo che i bean Spring si comportino come istanze ThreadLocal per un ExecutorService
- 24. Spring promosso bean con scope di richiesta ai thread figlio (HttpServletRequest)
- 25. Stampa tutti i bean Spring caricati
- 26. Qual è il modo più pulito per eseguire la copia di Spring Beans in un JSP?
- 27. Stampa tutti i bean Spring caricati - Spring Boot
- 28. riferimenti bean Spring opzionali
- 29. Spring @Autowiring con bean generici di fabbrica
- 30. Scopi bean Spring: session e globalSession
@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