Pour des raisons de tenue à la charge, il est souvent nécessaire de créer des caches mémoire dans les applications. Le plus souvent, le choix se porte sur ehcache, ou une ConcurrentHashMap.
Il y a maintenant une autre possibilité : utiliser le CacheBuilder de google guava. Grace à une petite api de type DSL, vous pourrez configurer un cache en quelques lignes de code.(tirées de la javadoc)
Cache graphs = CacheBuilder.newBuilder()
.concurrencyLevel(4)
.weakKeys()
.maximumSize(10000)
.expireAfterWrite(10, TimeUnit.MINUTES)
.build(
new CacheLoader() {
public Graph load(Key key) throws AnyException {
return createExpensiveGraph(key);
}
});
Et voila on dispose d’un cache finement configuré (weak keys, taille limitée, temps d’expiration de 10min) sans avoir à le coder soit même comme avec une concurrentHashMap et sans avoir à intégrer tout ehcache. En bonus un objet CacheStats est même tout prêt à être exposé via JMX pour monitorer la pertinence de ce cache.
Pour l’intégrer facilement à votre projet : la dependence maven à déclarer :
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>10.0</version>
</dependency>