Spring, mieszanie scope prototype i scope singleton

0

Mam 4 klasy: A, B, C, D. Chciałbym, żeby B i C były singletonami, ale tylko w obrębie obiektu A. Obiekty klasy A i D mają być prototypami. Czyli mniej więcej:

        A                              A2                  
     /     \                         /    \            
    B        C                      B2     C2        
    |      /   \                     |     /  \      
    D     D2    B                   D3    D4  B2    
                |                             |    
                D                            D3     

Jak (jeśli się da) to uzyskać za pomocą wstrzykiwania zależności i adnotacji Scope("signleton/prototype")? I że jak jakiś singleton posiada prototyp, to gdzieś indziej wstrzyknięty ten singleton powinien posiadać wszędzie ten sam prototyp?

0

Jak to singletonami w obrębie obiektu A?
A prototyp to defacto to samo co new, a tak w ogóle to co to za jakaś dziwna architektura :D
Może napisz co chcesz osiągnąć ;)

0

O coś takiego mi chodzi jak w załączniku.

Załóżmy że A to serwer w którym działają różne serwisy które chce żeby były singletonami w obrębie tego serwera. Ale zarazem chce moc utworzyć inna instancjie serwera z nowymi serwisami-singletonami

0

Robisz 2x bean z tej samej klasy. Jeden prototype, drugi singleton. Wstrzykujesz według potrzeb.
Ale o ile technicznie się da, to jak to zrobisz to na 99% przekombinujesz.

1

A myślałem że @jarekr000000 żartował w opisie że tak lubi singletony że robi po kilka instancji każdego :)

Singleton ma zawsze, ale to zawsze, jedną jedyną instancję. W springu są domyślnie, bo jedyną bezpieczną implementacją jest thread safe, immutable class. W takim wypadku nie ma potrzeby i sensu tworzenia kilku instancji bo wszystko dzieje się na stosie. I tak jeden serwer o ile nie ma trzyma stanu, może być używany z 1000 wątków bez potrzeby tworzenia kilku.

0

Przykład z serwerem wymyślony tylko do zobrazowania problemu. Po prostu chciałbym osiągnąć coś takiego, że A jest korzeniem drzewa i niektóre serwisy w obrębie tego drzewa są zawsze singletonami a inne zawsze prototypami.
Jednocześnie chcę żeby była możliwość zrobienia zupełnie innego 'drzewa' A ale z takimi samymi własnościami (ze B I C to singletony ale tylko w obrebie A - w porównaniu z tymi znajdującymi się w innych A to są one różne). I pytanie czy mogę to robić w springu jakoś ładnie czy wszystko zrobić prototypem i zarządzać tym 'ręcznie'?

1 użytkowników online, w tym zalogowanych: 0, gości: 1