Я использую пружинный кэш для улучшения запросов к базе данных, которая прекрасно работает следующим образом:Как загрузить @Cache при запуске весной?
@Bean
public CacheManager cacheManager() {
return new ConcurrentMapCacheManager("books");
}
@Cacheable("books")
public Book getByIsbn(String isbn) {
return dao.findByIsbn(isbn);
}
Но теперь я хочу, чтобы предварительно заполнить всю книгу-кэш при запуске. Это означает, что я хочу позвонить dao.findAll()
и поместить все значения в кеш. Эта процедура должна планироваться только периодически.
Но как я могу заполнить кеш при использовании @Cacheable
?
Да, это был бы вариант, но очень плохой для производительности, поскольку я нажимаю DB n-times во время запуска для каждой записи. И более того, это как-то избыточно, поскольку у меня уже есть все мои книги с помощью 'findAll()'. Таким образом, я ищу способ получить эти книги в кеш без другого обратного перехода к db. – membersound
Тогда можно сделать что-то вроде –
Отредактировано солном соответственно. –