Spring Bean-Bereich. Singleton und Prototyp

8

Angenommen, zwei Klassen ClassA und ClassB. Nehmen wir an, ClassB ist abhängig von ClassA. Wenn wir in der Konfigurationsdatei den Bereich von ClassA als Singleton und den von ClassB als Prototyp definieren, was passiert dann mit der Instanz von ClassB jedes Mal, wenn wir eine Bean-Instanz von ClassA erstellen? Wird dieselbe ClassB-Instanz zurückgegeben oder wird jedes Mal, wenn eine Instanz von ClassA zurückgegeben wird, eine neue Instanz erstellt?

Danke !!!

    
asp_NewBee 15.10.2013, 13:45
quelle

3 Antworten

5

Wenn ClassB ein Prototyp ist, wird immer eine neue Instanz von ClassB erstellt, es kümmert sich nicht um andere Klassen bei der Erstellung.

Wenn also ClassB ein Prototyp und ClassA Singleton ist, könnten Sie irgendwann in Ihrer Anwendung N Instanzen von ClassB und nur 1 von ClassA haben.

Da in Ihrem Fall nur eine Instanz von ClassA in Ihrem Anwendungslebenszyklus vorhanden ist, hat sie nur eine Instanz von ClassB, die sich von anderen Klassen unterscheidet, auf die in Ihrer Anwendung andere Beans verweisen

    
RamonBoza 15.10.2013, 13:48
quelle
3
  

Was passiert mit der Instanz von ClassB jedes Mal, wenn wir eine Bean-Instanz erstellen?   von ClassA?

Da ClassA ein Singleton ist, wird eine einzelne Instanz unter allen Instanzen von ClassB geteilt.

  

Wird dieselbe ClassB-Instanz zurückgegeben oder eine neue Instanz erstellt?   Jedes Mal, wenn eine Instanz von ClassA zurückgegeben wird?

Ich denke, hier meinten Sie: Wird dieselbe ClassA-Instanz zurückgegeben oder eine neue Instanz erstellt? Jedes Mal Instanz von ClassB zurückgegeben wird?

Jedes Mal, wenn eine Instanz von ClassB erstellt wird, wird die gemeinsame ClassA -Instanz (erneut) verwendet.

    
Konstantin Yovkov 15.10.2013 13:49
quelle
2
  

Was passiert mit der Instanz von ClassB jedes Mal, wenn wir eine Bean-Instanz erstellen?   von ClassA?

Nichts, wenn ClassA Singleton ist, wird es nur einmal instanziiert.

  

Wird dieselbe ClassB-Instanz zurückgegeben oder eine neue Instanz erstellt?   Jedes Mal, wenn eine Instanz von ClassA zurückgegeben wird?

Verschiedene Instanzen, da es sich um eine Prototyp-Bean handelt. Aber da ClassA Singleton ist, wird es jedes Mal auf die gleiche Weise instanziiert (hängt von Ihrer Beziehung zwischen diesen Klassen ab, die Sie erwähnt haben)

    
Eugen Halca 15.10.2013 13:50
quelle

Tags und Links