2010-01-31 17 views

Odpowiedz

24

Tak, powinny należeć do zakresu singleton. Usługi powinny być bezpaństwowcami, a więc nie potrzebują więcej niż jednej instancji.

Tym samym zdefiniowanie ich w zakresie singleton zaoszczędziłoby czas na ich utworzenie i połączenie.

singleton to domyślny zakres na wiosnę, więc po prostu pozostaw swoje definicje fasoli bez zmian, bez wyraźnego określania atrybutu scope.

Możesz przeczytać więcej na temat zakresów in the spring docs.

+0

Dzięki. Jestem nowy w Spring, wiem, jak napisać klasę singleton, ale jak ustawić "zakres singleton" używając Spring? – oym

+0

Och, nie widziałem twojego komentarza o tym, że jest to domyślny zakres. Czy mógłbyś mi wyjaśnić, gdzie ten zakres jest ustawiony i skonfigurowany tylko po to, abym mógł wiedzieć, jak wszystko jest podłączone? Dzięki jeszcze raz. – oym

+0

Dodałem link do mojej odpowiedzi. – Bozho

2

Wiosna jest łatwiejsza w użyciu, jeśli trzymasz się fasoli pojedynczej. Singleton to jego "domyślna pozycja", jeśli chcesz. Tak, obsługuje on inne zakresy (używając scope="xyz" w pliku XML), ale utrudnia korzystanie z niego i obniża wydajność.

Zasadniczo, chyba że masz dobry powód, by postąpić inaczej, trzymaj się singletonów.

1

Potrzebujesz głównie singletonów. (Spring default.) Singletony muszą być wątkowo bezpieczne, ponieważ żądania równoległe będą używać tego samego pojedynczego wystąpienia. W rzeczywistości muszą być całkowicie bezpaństwowi, ponieważ mogą być niszczone i odtwarzane w dowolnym momencie.

Jeśli chcesz śledzić stan wewnątrz swojej fasoli (nie powinieneś, to powinno być w bazie danych lub zapisane w żądaniu), otrzymasz wiele wystąpień tego samego rodzaju fasoli, zużycie pamięci rośnie z liczbą żądań, przy czym w przypadku singletonów nadal będziesz mieć tylko jedną instancję.

Nawet jeśli zgrupujesz fasolę do żądania, to nadal potrzebujesz przynajmniej wątku bezpieczeństwa (żądania przychodzące z tej samej przeglądarki w tym samym czasie).

+0

Jednorożec wiosenny może * nie * zostać utworzony i zniszczony w dowolnym momencie, nie wiem skąd to masz (może mieszałeś je z ziarenkami sesji EJB). Również zmienny stan w singletonie Spring jest absolutnie w porządku, po prostu musisz wiedzieć, jakie operacje można wykonać na tym wspólnym stanie. – skaffman

Powiązane problemy