Основное различие между аннотациями @Cacheable и @CachePut в Spring заключается в том, что при использовании @Cacheable метод выполняется только один раз, а результат сохраняется в кэше. 1 При последующих вызовах метода он не выполняется, а получает результат из кэша. 1 С @CachePut метод выполняется каждый раз, и его результат сохраняется в хранилище кэша. 1
Использовать аннотации @CachePut и @Cacheable в одном и том же методе, как правило, не рекомендуется, поскольку они имеют отличающуюся логику работы. 2 Это приводит к непредвиденной логике работы. 2
Таким образом, при использовании @Cacheable вызов метода пропускается при использовании кэша, а при использовании @CachePut происходит форсированный вызов метода для выполнения обновления кэша. 2