2012-12-28 5 views
2

Je viens d'un arrière-plan avec Java et Spring, et je suis plutôt nouveau avec Castle Windsor. J'ai lu qu'il est important de savoir quand des composants transitoires seront libérés par Castle car il suit tous les composants créés. J'ai du mal à comprendre quand mes composants seront publiés. Voici les bases de mon modèle:Quand est-ce que Castle Windsor libère des composants transitoires?

Singleton -> Singleton Typed Factory -> Transient Objects 

Si je libère la première singleton dans cette chaîne tous les objets transitoires créés par le typed factory être libérés? Y at-il un appel d'API que je peux faire pour vérifier si c'est le cas? Je ne trouve aucune documentation complète sur l'API sur le site Web de Castle Windsor. La documentation que j'ai trouvée ne me semble pas claire.

Éditer: Mon problème se résume à deux questions principales.

  1. Si j'ai un objet singleton (A) qui dépend d'une fabrique typée singleton (B) et que je libère un singleton A va-t-il réellement libérer B? Le billet de blog mentionné dans la réponse ci-dessous indique que les appels à libérer sur les objets singleton sont ignorés, donc mon hypothèse est non, il ne sera pas publié.
  2. Si une fabrique typée singleton est utilisée par plusieurs requêtes Web simultanément pour créer des objets transitoires et est libérée par l'une des requêtes Web, les objets transitoires seront libérés, qu'ils aient été créés à partir de cette requête Web ou pas? Il semble presque que faire des usines dactylographiées par demande de Web ou mode de vie transitoire est meilleur.
+0

Dans votre modification, vous mentionnez les composants Transient dans les requêtes Web. Si c'est pour une application Web, pourquoi ne pas utiliser le mode de vie PerWebRequest (qui a un point de terminaison bien défini au niveau duquel les composants seront libérés)? – PatrickSteele

+0

@PatrickSteele Si j'ai une fabrique de style de vie PerWebRequest, cela libèrera-t-il automatiquement tous les objets transitoires créés à la fin de la requête? – jjathman

Répondre

7

Voici un message détaillé qui explique comment les objets suit Windsor et quand vous devez appeler sortie: http://kozmic.pl/2010/08/27/must-i-release-everything-when-using-windsor/

Mises à jour vos mises à jour

  1. Toute libération d'un singleton est ignoré si , oui, vous avez raison - il ne sera pas publié.

  2. Vous avez seulement besoin de vous soucier de la libération des composants vous avez spécifiquement résolu. S'il a été résolu par Windsor (via Typed Factory Facility, résolveur de sous-dépendance, etc ...) ne vous inquiétez pas.

+1

Merci, j'ai lu ce message plusieurs fois, mais je ne suis toujours pas sûr de quelques-uns des détails non couverts par la poste. J'ai ajouté plus de détails à ma question sur ce que je m'interroge spécifiquement. Pourriez-vous jeter un coup d'oeil? – jjathman

Questions connexes