Sobes.tech
Назад к вопросам
Junior — Middle
84

Чем отличается область видимости Singleton и Prototype в контексте инъекций зависимостей?

Компании, где спрашивали
Формат кодаФормат кода

Ответ от нейросети

sobes.tech AI

В контексте внедрения зависимостей область видимости (scope) определяет жизненный цикл и количество экземпляров создаваемых объектов.

  • Singleton: объект создаётся один раз на весь жизненный цикл приложения или контейнера DI. Все запросы на эту зависимость получают один и тот же экземпляр. Это удобно для сервисов, которые должны сохранять состояние или быть общими.

  • Prototype: при каждом запросе создаётся новый экземпляр объекта. Это полезно, когда требуется независимый объект с собственным состоянием.

Пример:

// Singleton scope
@Component
@Scope("singleton")
public class MyService {
    // один экземпляр на приложение
}

// Prototype scope
@Component
@Scope("prototype")
public class MyPrototypeService {
    // новый экземпляр при каждом запросе
}

Таким образом, Singleton обеспечивает единый экземпляр, а Prototype — множество независимых экземпляров, что влияет на управление состоянием и производительность приложения.