Voici un exemple complet de configuration de Guava Cache au printemps. J'ai utilisé Guava plutôt qu'Ehcache car il est un peu plus léger et la configuration me paraissait plus simple.
Importer les dépendances Maven
Ajoutez ces dépendances à votre fichier maven pom et exécutez clean and packages. Ces fichiers sont les méthodes d'assistance Guava dep et Spring à utiliser dans CacheBuilder.
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>18.0</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
Configurer le cache
Vous devez créer un fichier CacheConfig pour configurer le cache à l'aide de Java config.
@Configuration
@EnableCaching
public class CacheConfig {
public final static String CACHE_ONE = "cacheOne";
public final static String CACHE_TWO = "cacheTwo";
@Bean
public Cache cacheOne() {
return new GuavaCache(CACHE_ONE, CacheBuilder.newBuilder()
.expireAfterWrite(60, TimeUnit.MINUTES)
.build());
}
@Bean
public Cache cacheTwo() {
return new GuavaCache(CACHE_TWO, CacheBuilder.newBuilder()
.expireAfterWrite(60, TimeUnit.SECONDS)
.build());
}
}
Annoter la méthode à mettre en cache
Ajoutez l'annotation @Cacheable et transmettez le nom du cache.
@Service
public class CachedService extends WebServiceGatewaySupport implements CachedService {
@Inject
private RestTemplate restTemplate;
@Cacheable(CacheConfig.CACHE_ONE)
public String getCached() {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> reqEntity = new HttpEntity<>("url", headers);
ResponseEntity<String> response;
String url = "url";
response = restTemplate.exchange(
url,
HttpMethod.GET, reqEntity, String.class);
return response.getBody();
}
}
Vous pouvez voir un exemple plus complet ici avec des captures d'écran annotées: Guava Cache in Spring