quand est-ce un printemps bean instancié
ApplicationContext ctx = new ClassPathXmlApplicationContext(
"com/springinaction/springidol/spring-idol.xml");
Performer performer = (Performer) ctx.getBean("duke");
performer.perform();
Ci-dessus, lorsque les haricots sont instanciés lorsque l'ApplicationContext est créé ou lorsque le getBean() est appelée?
Vous devez vous connecter pour publier un commentaire.
En supposant que le haricot est un singleton, et n'est pas configuré pour les paresseux initialisation, puis il est créé lorsque le contexte est lancé.
getBean()
juste poissons il.Lazy-init haricots ne seront initialisées lors de la première référence, mais ce n'est pas la valeur par défaut. L'étendue des haricots (par exemple, le prototype de portée) va également être créé lors de la première référencés.
BeanFactory
est juste une interface, ce qui dépend de la mise en œuvre que vous utilisez, mais en général, oui, la même chose est vraie pour la plupart (si pas tous)BeanFactory
implémentations.En fonction de Printemps la documentation,
Aussi, vous pouvez les mettre à la charge paresseusement.
Pour référence, voir
Voici une brève description de quand les haricots sont créés:
Par défaut, tous les haricots sont des singletons, de sorte que chaque fois que le contexte de l'Application est créé, ils sont tous pré-chargé. Si, plus précisément, tout singleton bean a un attribut lazy-init="true", il vous sera chargement paresseux, c'est à dire qu'il sera instancié lors de la getBean méthode est appelée pour la première fois.
Pour d'autres étendues, les haricots être instanciée lorsqu'ils sont demandés.
Par défaut il est créé lorsque le contexte est lancé, mais l'ordre dépend de dépendances.
Si nous avons les classes suivantes :
De catégorie A sera créé avant la classe B, car il dépend de la classe A.