Как прогреть кэши в Spring Boot?
Или вообще как выполнить что-то на старте Spring Boot приложения?
Обычно такие операции делают в
Если “прогрев” находится в
Более элегантный способ “прогреть кэши”
Смотри:
Код выглядит как на картинке:
Плюс: В интеграционных тестах с
Когда “прогрев” все-таки нужен в тестах, добавляем параметр
👉 Java Portal
Или вообще как выполнить что-то на старте Spring Boot приложения?
Обычно такие операции делают в
@PostConstruct или подписываются на событие ApplicationReadyEvent. Но у этих вариантов есть заметный минус.Если “прогрев” находится в
@PostConstruct, как отключить его в тестах? Можно добавить флаг, сделать сабкласс и подменить его в тестовой конфигурации, но это не всегда помогает и часто выглядит как костыль.Более элегантный способ “прогреть кэши”
Смотри:
SpringApplication.run(...) возвращает полностью готовый контекст. Можно достать из него компонент и вызвать нужный метод “прогрева”.Код выглядит как на картинке:
Плюс: В интеграционных тестах с
@SpringBootTest метод main не запускается. Соответственно, код внутри него не выполняется. Никаких костылей вокруг @PostConstruct, все чисто и красиво.Когда “прогрев” все-таки нужен в тестах, добавляем параметр
use main method:@SpringBootTest(useMainMethod = SpringBootTest.UseMainMethod.ALWAYS)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6