Jedináček a prototyp

Z pohledu životního cyklu kontejnerem spravovaných tříd existují dva základní způsoby poskytování objektů těchto tříd. Deklarujeme-li element bean s atributem singleton="true" a nebo tento atribut vynecháme (jde totiž o defaultní hodnotu), tak kontejner vytvoří jediný objekt dané třídy a odkaz na něj pak vrací při každém volání metody BeanFactory.getBean("id_naseho_objektu"). Tento objekt je tedy jedináčkem v rámci celé aplikace a i všechny ostatní spravované třídy, které mají ve svém elementu bean deklarovánu závislost na tomto jedináčku, získají odkaz na tentýž objekt.

Naopak nastavíme-li naší třídě v elementu bean atribut singleton na hodnotu false, pak každé volání metody BeanFactory.getBean("id_naseho_objektu") vrátí nový objekt dané třídy. Takto definovaná třída je pak označována jako prototyp (prototype). Je nutné ovšem zdůraznit, že jakmile je nová instance třídy předána klientovi, tak kontejner si již odkaz na ni nedrží, čili na prototyp nelze aplikovat žádné běžné rámcem Spring™ poskytované deklarativní služby, o kterých si povíme v dalším textu.

Konfigurační kód

<bean id="a" class="com.ClassA" singleton="false">
  <property name="propB" ref="b" />
</bean>
<bean id="b" class="com.ClassB" singleton="false">
  <property name="propA" ref="a" />
</bean>

tedy říká, že při každém volání BeanFactory.getBean("a") dostaneme úplně novou instanci třídy ClassA, která bude mít odkaz na úplně novou instanci třídy ClassB. Stejně tomu je při volání BeanFactory.getBean("b").

Komentáře

Téma neobsahuje žádné komentáře.

Vložit komentář

Můžete používat značkovací jazyk Texy!


Jméno:
E-mail:
Url:
Komentář:
1 + 2 =
 
MoroSystems, s.r.o.