Sobes.tech
Back to questions
Junior — Middle
61

Что означает определение области видимости для бинов с значениями singleton и prototype в Spring, и как это влияет на их поведение?

Answer from AI

sobes.tech 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 влияет на то, как и когда создаются объекты и как долго они живут в приложении.