TGViewer
Java Guru 🤓 Java Guru 🤓 @javatasks · 13.1K subscribers
Post #3687 850

Forwarded from Java библиотека

Как прогреть кэши в Spring Boot?

Или вообще как выполнить что-то на старте Spring Boot приложения?

Обычно такие операции делают в @PostConstruct или подписываются на событие ApplicationReadyEvent. Но у этих вариантов есть заметный минус.

Если “прогрев” находится в @PostConstruct, как отключить его в тестах? Можно добавить флаг, сделать сабкласс и подменить его в тестовой конфигурации, но это не всегда помогает и часто выглядит как костыль.

Более элегантный способ “прогреть кэши”

Смотри: SpringApplication.run(...) возвращает полностью готовый контекст. Можно достать из него компонент и вызвать нужный метод “прогрева”.

Код выглядит как на картинке:

Плюс: В интеграционных тестах с @SpringBootTest метод main не запускается. Соответственно, код внутри него не выполняется. Никаких костылей вокруг @PostConstruct, все чисто и красиво.

Когда “прогрев” все-таки нужен в тестах, добавляем параметр use main method:

@SpringBootTest(useMainMethod = SpringBootTest.UseMainMethod.ALWAYS)


Полезные ресурсы по Java 👩‍💻| Наш канал в MAX 🟪
  • 👍 6
  • ❤ 2
  • 🔥 2
More from @javatasks
  1. Oct 13, 2026Post #3928
  2. Oct 13, 2026Post #3927
  3. Oct 13, 2026👩‍💻 Spring Boot под нагрузкой: почему сервис работает локально и падает в production При…
  4. Oct 13, 2026Post #3925
  5. Oct 13, 2026Post #3924
  6. Oct 13, 2026Post #3923
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →