Atualização de cache assíncrona com abstração de cache de primavera

Usando a abstração de cache do Spring, como posso fazer com que um cache atualize uma entrada de forma assíncrona enquanto ainda retorna a entrada antiga?

Estou tentando usar a abstração de cache do Spring para criar um sistema de cache em que, após um tempo limite "suave" relativamente curto, as entradas de cache se tornam elegíveis para atualização. Em seguida, quando são consultados, o valor em cache é retornado e uma operação de atualização assíncrona é iniciada para atualizar a entrada. eu também faria

O construtor de cache do Guava permite especificar que as entradas no cache devem ser atualizadas após um certo período de tempo. O método reload () do carregador de cache pode ser substituído por uma implementação assíncrona, permitindo que o valor em cache antigo seja retornado até que o novo seja recuperado. No entanto, o cache da primavera parece não usar o CacheLoader de um cache do Guava subjacente

É possível fazer esse tipo de atualização de cache assíncrona usando a abstração de cache do Spring?

Edite para esclarecer: Com o CacheBuilder do Guava, posso usar refreshAfterWrite () para obter o comportamento que desejo. por exemplo. deCaches de goiaba explicados:

LoadingCache<Key, Graph> graphs = CacheBuilder.newBuilder()
   .maximumSize(1000)
   .refreshAfterWrite(1, TimeUnit.MINUTES)
   .build(
       new CacheLoader<Key, Graph>() {
         public Graph load(Key key) { // no checked exception
           return getGraphFromDatabase(key);
         }

         public ListenableFuture<Graph> reload(final Key key, Graph prevGraph) {
           if (neverNeedsRefresh(key)) {
             return Futures.immediateFuture(prevGraph);
           } else {
             // asynchronous!
             ListenableFutureTask<Graph> task = ListenableFutureTask.create(new Callable<Graph>() {
               public Graph call() {
                 return getGraphFromDatabase(key);
               }
             });
             executor.execute(task);
             return task;
           }
         }
       });

No entanto, não consigo encontrar uma maneira de obter o comportamento de refreshAfterWrite () usando a abstração @Cacheable do Spring.