Как запустить кеширование в модуле зависимостей в Springboot? - PullRequest
0 голосов
/ 11 октября 2019

У меня есть модуль, который определяет кеши согласно этому блогу , который вводится как зависимость в другой модуль. Однако кэширование не загружается в основном приложении. Как настроить приложение Springboot для начальной загрузки кэша (ов), определенных в зависимости?

1 Ответ

0 голосов
/ 11 октября 2019

Кэширование происходит по двум возможным сценариям

  1. При вызове метода
  2. Вручную поместите объект в кэш

по примеру в вашем вопросе, давайте разберемся в методе ниже

@Service
public class NumberService {

    // ...
    @Cacheable(
      value = "squareCache", 
      key = "#number", 
      condition = "#number>10")
    public BigDecimal square(Long number) {
        BigDecimal square = BigDecimal.valueOf(number)
          .multiply(BigDecimal.valueOf(number));
        log.info("square of {} is {}", number, square);
        return square;
    }
}

Метод square будет кэшировать результат для всех входных данных (скажем, от 1 до 10), если вы хотите, чтобы он кэшировалсяквадрат всех возможных входных значений, все, что вам нужно сделать, вызвать метод со всеми возможными значениями. Вы можете сделать это при запуске.

Этот URL Как загрузить @Cache при запуске весной? поможет вам

Ниже приведен один пример

@Service
public class NumberCacheScheduler {
    @Autowired
    NumberService numberService;


    @PostConstruct
    public void init() {
        update();

    }

    public void update() {
        for (long l=1l; i <=10,l++) {
            numberService.square(l);
        }
    }
}
...