Найти в Дзене
DEBAGanov

Java 262. Чем Spring singleton отличается от prototype?

В Spring Framework есть два основных типа области видимости бинов - singleton и prototype.

Singleton - это область видимости, при которой Spring создает единственный экземпляр бина для всего приложения. Это означает, что при каждом запросе на получение бина будет возвращаться один и тот же объект. Singleton является областью видимости по умолчанию в Spring.

Например, если определить следующий бин:

@Component public class MySingletonBean {
// ... }


то Spring создаст только один экземпляр этого класса и использует его во всех местах, где потребуется этот бин.


Prototype - это область видимости, при которой Spring создает новый экземпляр бина каждый раз, когда он запрашивается. Это означает, что каждый раз, когда мы запрашиваем бин, мы получаем новый объект, а не повторно используем существующий.

Например, если определить следующий бин:

@Component @Scope(value="prototype")
public class MyPrototypeBean {
// ... }

то каждый раз, когда будет запрошен этот бин, Spring создаст новый экземпляр класса.

Основное отличие между singleton и prototype заключается в том, что singleton создает только один экземпляр бина для всего приложения, в то время как prototype создает новый экземпляр при каждом запросе.

Выбор между singleton и prototype зависит от конкретных требований приложения. Если бин должен быть общедоступным и использоваться в разных частях приложения, то лучше использовать singleton. Если же бин используется только в определенной части приложения и не должен быть общедоступным, то лучше использовать prototype, чтобы избежать накопления ресурсов.

Некоторые другие типы области видимости, которые поддерживаются Spring Framework, - request, session и global session. Они позволяют ограничить область видимости бина до определенного HTTP-запроса или сессии.

1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions

Tелеграмм канал: https://t.me/DEBAGanov

Мое резюме: https://github.com/DEBAGanov