Sobes.tech
Junior — Middle

Co oznacza określenie zakresu dla beanów z wartościami singleton i prototype w Spring, i jak to wpływa na ich zachowanie?

sobes.tech AI

Odpowiedź od AI

W Springu zakres widoczności (scope) beana określa czas życia i widoczność instancji beana.

  • singleton — jest to domyślny zakres. Za każdym razem, gdy żądany jest bean z tym scope'em, Spring zwraca tę samą instancję przez cały cykl życia kontenera. Oznacza to, że bean jest tworzony raz i używany wielokrotnie.

  • prototype — przy każdym żądaniu tworzona jest nowa instancja beana. Spring nie zarządza cyklem życia tych beanów po ich utworzeniu, więc każde wywołanie getBean zwraca nowy obiekt.

Wpływ na zachowanie:

  • Beany singleton oszczędzają zasoby i zapewniają stan wspólny dla wszystkich użytkowników.
  • Beany prototype są przydatne, gdy potrzebna jest nowa instancja z niezależnym stanem dla każdego użycia.

Przykład:

@Component
@Scope("prototype")
public class MyPrototypeBean {
    // każde wywołanie getBean utworzy nowy obiekt
}

@Component
@Scope("singleton")
public class MySingletonBean {
    // jeden obiekt na cały kontener
}

W związku z tym wybór scope wpływa na to, jak i kiedy tworzone są obiekty oraz jak długo żyją w aplikacji.