Sono stato a poco a poco alle prese con Spring per un po 'di tempo e penso di avere un'idea ragionevole dei concetti, tuttavia ho trovato informazioni in un'altra delle mie discussioni che ha capovolto le cose per me ...Spring Prototype Beans and Benefits of Spring
" ... anche se i metodi di inizializzazione del ciclo di vita di callback sono chiamati tutti gli oggetti indipendentemente dal campo di applicazione, nel caso di prototipi, callback del ciclo di vita di distruzione configurato non sono chiamati. il codice cliente deve ripulire sui prototipi oggetti con scope e liberare risorse costose che i bean prototipo mantengono. Per ottenere il contenitore Spring per rilasciare le risorse detenute da bean con scope prototipo, provare a utilizzare un post-processore bean personalizzato, che contiene un riferimento ai bean che eed per essere ripulito. "
Questo mi ha fatto pensare che ho casi di utilizzo reali in cui mi piacerebbe utilizzare i fagioli prototipo in cui, ad esempio, ho bisogno di una "nuova" istanza di bean per richiesta. Tuttavia da quello che ho capito di questo frammento (dai documenti di Spring 3) Spring mantiene il riferimento ai bean che devono essere ripuliti (il riferimento stesso che significa che il bean non verrà cancellato automaticamente dal garbage collector). Inoltre, ritengo che le risorse detenute dal bean prototipo debbano essere pulite manualmente.
Qualcuno può farmi sapere se questo è corretto? Se è così c'è un tipico schema usato per affrontare questo? Apprezzerei una risposta che potesse descrivere il motivo architettonico per cui Spring implementa i fagioli prototipo in questo modo.
Sul caso di necessità ambito su richiesta è possibile utente Richiesta portata;) http://static.springsource.org/spring/docs/3.0.0.M3/spring-framework-reference /html/ch04s04.html –
@Spaeth Mi dispiace che possa essere stato fuorviante ... questa non è un'applicazione web, stavo solo cercando di dimostrare la necessità di creare una nuova istanza per gestire "qualcosa" che sta accadendo – JLove