Question

J'aimerais créer une fenêtre avec une barre de progression indiquant le statut actuel de l'instanciation d'objet de Spring. documentation de Spring.Net > il semble que IObjectPostProcessors soit le bon point pour démarrer et effectuer le suivi chaque fois qu’un objet a été instancié. Cependant, pour obtenir "Pourcentage de classes instanciées" Je dois demander à ObjectDefinitionCount de l'usine de Spring de récupérer le nombre d'objets configurés. Cependant, cela ne fonctionne pas tant que le contexte n'a pas été créé (également ce problème semble être lié).

S'il n'est pas possible d'utiliser Spring pour obtenir l'état de démarrage, comment afficher les informations lors du démarrage de l'application pour l'utilisateur?

Était-ce utile?

La solution

Je peux vous fournir une solution de contournement, même si ce n'est pas parfait, cela devrait probablement être une bonne estimation.

  • Vous utilisez un mécanisme de stockage persistant (fichiers de propriétés, db, etc.) pour garder une trace du nombre de beans créés.
  • Vous utilisez IObjectPostProcessors pour mettre à jour le nombre d'initialisations
  • Lors de la première exécution, la valeur sera évidemment 0
  • Lors des exécutions suivantes, vous utilisez le dernier compte pour estimer le nombre d'initialisations à effectuer.

Bien sûr, ce n’est pas exact, mais cela devrait fournir une bonne estimation la plupart du temps.

Autres conseils

La lecture du printemps dans la configuration s'effectue en 2 étapes: d’abord, toutes les définitions d’objet sont lues dans la configuration et ensuite, ces définitions sont traitées, en instanciant des singletons si nécessaire.

Vous devriez obtenir ce que vous voulez en implémentant un IObjectFactoryPostProcessor. ObjectFactoryPostProcessors sont les premiers objets instanciés avant toute autre chose. À ce stade, le nombre de définitions d'objet est déjà disponible. L’utilisation d’un IObjectPostProcessor vous donne les informations sur chaque objet instancié.

Si vous avez déjà obtenu le nombre de définitions d'objet au moment du chargement de la configuration, je suppose que c'est possible, mais Spring lit la configuration en un seul passage. Vous devez obtenir le nombre total d'objets en utilisant une technique différente.

hth, Erich

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top