Upgrade to Ehcache 3

I saw on twitter the reference of an article (in french):
http://javaetmoi.com/2016/08/migrer-vers-spring-boot/

That article concludes with something along the lines of  "Besides the
EhCache and Maven configuration, Petclinic does not hold a single line
of XML anymore".

Looking at the code, we can remove more XML if you want. This PR migrates
the cache infrastructure to EhCache 3 and JCache (JSR-107). This also
reduces the number of dependencies.
This commit is contained in:
Stephane Nicoll 2016-08-29 18:48:12 +02:00
parent 864580702f
commit a41b83a2fd
4 changed files with 35 additions and 459 deletions

View file

@ -1,6 +1,19 @@
package org.springframework.samples.petclinic.config;
import java.util.concurrent.TimeUnit;
import javax.cache.CacheManager;
import org.ehcache.config.CacheConfiguration;
import org.ehcache.config.builders.CacheConfigurationBuilder;
import org.ehcache.config.builders.ResourcePoolsBuilder;
import org.ehcache.config.units.EntryUnit;
import org.ehcache.expiry.Duration;
import org.ehcache.expiry.Expirations;
import org.ehcache.jsr107.Eh107Configuration;
import org.springframework.boot.autoconfigure.cache.JCacheManagerCustomizer;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
@ -11,4 +24,21 @@ import org.springframework.context.annotation.Profile;
@EnableCaching
@Profile("production")
public class CacheConfig {
@Bean
public JCacheManagerCustomizer cacheManagerCustomizer() {
return new JCacheManagerCustomizer() {
@Override
public void customize(CacheManager cacheManager) {
CacheConfiguration<Object, Object> config = CacheConfigurationBuilder
.newCacheConfigurationBuilder(Object.class, Object.class,
ResourcePoolsBuilder.newResourcePoolsBuilder()
.heap(100, EntryUnit.ENTRIES))
.withExpiry(Expirations.timeToLiveExpiration(Duration.of(60, TimeUnit.SECONDS)))
.build();
cacheManager.createCache("vets", Eh107Configuration.fromEhcacheCacheConfiguration(config));
}
};
}
}