Middle
74
questionbank

Как создать singleton-бин при запуске Spring приложения?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Для создания singleton-бина при запуске Spring приложения можно использовать несколько подходов:

  1. С помощью аннотации @Component (или производных @Service, @Repository, @Controller) и указать scope="singleton" (хотя это значение по умолчанию). Spring по умолчанию создает эти бины Eagerly (при старте контекста).

    java
  2. С помощью аннотации @Bean внутри @Configuration класса. По умолчанию бины, объявленные таким образом, также являются singleton'ами и создаются при старте.

    java
  3. Явно указать lazy-init="false" для XML-конфигурации или @Lazy(false) для Java-конфигурации. Это гарантирует создание бина не при первом запросе, а при старте контекста, даже если его scope не singleton. Однако для scope singleton это поведение по умолчанию.

    java
    java

Для всех перечисленных методов, если не указано иное, Spring создает один экземпляр бина и помещает его в ApplicationContext при его инициализации. Этот экземпляр затем используется для всех зависимостей.