Springowy service (singleton), a thread safety

0

Witam,
Mam springowy service o domyslym scope, czyli singleton. Jak wiadomo to okazja do hazardu.

  1. Czy uzywanie slowa kluczowego synchronized dla metod nalezacych do klasy, bedacej service springowym jest niezbedne, czy spring sam z siebie troszczy sie o to, aby jego singletony byly thread safe (byloby to slabe wydajnosciowo, ale bezpieczne)?

  2. Przy okazji, jak wiadomo w EJB tez wystepuja singleton beans. Czy tam sytuacja jest taka sama jak w Springu (dotyczy koniecznosci uzywania slowa kluczowego synchronized)?

Pozdrawiam,

0
  1. Nic się samo nie dzieje i musisz sam synchronizować jeśli jest taka potrzeba. Ale tak w ogóle to raczej taki serwis powinien być bezstanowy, a jeśli nie jest to sam sie prosisz o guza. W normalnej sytuacji serwis ma tylko pola które są innymi serwisami albo jakimiś obiektami typu logger. Nie powinien przechowywać stanu.
  2. Tak samo jak wyżej powinny one być bezstanowe, ale jeśli nie są to musisz je synchronizować.
1

Na początek zastanów się, czy jeżeli singleton wymaga synchronizacji (jest stanowy) to czy nie jest to przez przypadek błąd projektowy.

0

Dzięki, nie mam już wątpliwości.

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