Sobes.tech
Junior — Middle

Какво означава определението за обхват за бинове с стойности singleton и prototype в Spring и как това влияе на тяхното поведение?

sobes.tech AI

Отговор от AI

В Spring обхватът на видимост (scope) на бина определя времето на живот и видимостта на екземпляра на бина.

  • singleton — това е подразбиращият се обхват. Всеки път, когато се поиска бин с този scope, Spring връща същия екземпляр през целия жизнен цикъл на контейнера. Това означава, че бинът се създава веднъж и се използва повторно.

  • prototype — при всяко искане се създава нов екземпляр на бина. Spring не управлява жизнения цикъл на тези бинове след създаването им, затова всеки повикване на getBean връща нов обект.

Влияние върху поведението:

  • Singleton биновете спестяват ресурси и осигуряват споделено състояние за всички потребители.
  • Prototype биновете са полезни, когато е необходим нов екземпляр с независимо състояние за всяко използване.

Пример:

@Component
@Scope("prototype")
public class MyPrototypeBean {
    // всяко извикване на getBean ще създаде нов обект
}

@Component
@Scope("singleton")
public class MySingletonBean {
    // един обект за целия контейнер
}

Така изборът на scope влияе върху начина и времето на създаване на обектите и колко дълго те живеят в приложението.