|
|
|
@ -6,50 +6,52 @@ import org.ehcache.config.builders.ResourcePoolsBuilder;
|
|
|
|
|
import org.ehcache.config.units.EntryUnit; |
|
|
|
|
import org.ehcache.config.units.MemoryUnit; |
|
|
|
|
import org.ehcache.jsr107.Eh107Configuration; |
|
|
|
|
import org.hibernate.cache.jcache.ConfigSettings; |
|
|
|
|
import org.springframework.boot.autoconfigure.cache.JCacheManagerCustomizer; |
|
|
|
|
import org.springframework.boot.autoconfigure.orm.jpa.HibernatePropertiesCustomizer; |
|
|
|
|
import org.springframework.cache.CacheManager; |
|
|
|
|
import org.springframework.cache.annotation.EnableCaching; |
|
|
|
|
import org.springframework.cache.jcache.JCacheCacheManager; |
|
|
|
|
import org.springframework.context.annotation.AdviceMode; |
|
|
|
|
import org.springframework.context.annotation.Bean; |
|
|
|
|
import org.springframework.context.annotation.Configuration; |
|
|
|
|
import org.springframework.context.annotation.Primary; |
|
|
|
|
|
|
|
|
|
import javax.cache.Caching; |
|
|
|
|
import javax.cache.spi.CachingProvider; |
|
|
|
|
import java.time.Duration; |
|
|
|
|
|
|
|
|
|
@Configuration |
|
|
|
|
@EnableCaching(proxyTargetClass = true, mode = AdviceMode.PROXY) |
|
|
|
|
public class CachingConfig { |
|
|
|
|
|
|
|
|
|
private final javax.cache.configuration.Configuration<Object, Object> jCacheConfiguration; |
|
|
|
|
@Primary |
|
|
|
|
@Bean(name = "ehCacheManager") |
|
|
|
|
public JCacheCacheManager ehCacheManager() { |
|
|
|
|
CachingProvider cachingProvider = Caching.getCachingProvider(); |
|
|
|
|
javax.cache.CacheManager jCacheManager = cachingProvider.getCacheManager(); |
|
|
|
|
|
|
|
|
|
public CachingConfig() { |
|
|
|
|
this.jCacheConfiguration = Eh107Configuration.fromEhcacheCacheConfiguration(CacheConfigurationBuilder.newCacheConfigurationBuilder(Object.class, Object.class, |
|
|
|
|
javax.cache.configuration.Configuration<Object, Object> jCacheConfiguration = |
|
|
|
|
Eh107Configuration.fromEhcacheCacheConfiguration( |
|
|
|
|
CacheConfigurationBuilder.newCacheConfigurationBuilder(Object.class, Object.class, |
|
|
|
|
ResourcePoolsBuilder.newResourcePoolsBuilder() |
|
|
|
|
.heap(10000, EntryUnit.ENTRIES)) |
|
|
|
|
.withSizeOfMaxObjectSize(1000, MemoryUnit.B) |
|
|
|
|
.withExpiry(ExpiryPolicyBuilder.timeToIdleExpiration(Duration.ofSeconds(10))) |
|
|
|
|
.withExpiry(ExpiryPolicyBuilder.timeToLiveExpiration(Duration.ofSeconds(10)))); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Bean |
|
|
|
|
public HibernatePropertiesCustomizer hibernatePropertiesCustomizer(CacheManager cacheManager) { |
|
|
|
|
return hibernateProperties -> hibernateProperties.put(ConfigSettings.CACHE_MANAGER, cacheManager); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Bean |
|
|
|
|
public JCacheManagerCustomizer cacheManagerCustomizer() { |
|
|
|
|
return new JCacheManagerCustomizer() { |
|
|
|
|
@Override |
|
|
|
|
public void customize(javax.cache.CacheManager cm) { |
|
|
|
|
cm.createCache("code", jCacheConfiguration); |
|
|
|
|
cm.createCache("flight" , Eh107Configuration.fromEhcacheCacheConfiguration(CacheConfigurationBuilder.newCacheConfigurationBuilder(Object.class, Object.class, |
|
|
|
|
jCacheManager.createCache("code", jCacheConfiguration); |
|
|
|
|
jCacheManager.createCache("flight", Eh107Configuration.fromEhcacheCacheConfiguration( |
|
|
|
|
CacheConfigurationBuilder.newCacheConfigurationBuilder(Object.class, Object.class, |
|
|
|
|
ResourcePoolsBuilder.newResourcePoolsBuilder() |
|
|
|
|
.heap(5000, EntryUnit.ENTRIES)) |
|
|
|
|
.withSizeOfMaxObjectSize(500, MemoryUnit.B) |
|
|
|
|
.withExpiry(ExpiryPolicyBuilder.timeToIdleExpiration(Duration.ofSeconds(10))) |
|
|
|
|
.withExpiry(ExpiryPolicyBuilder.timeToLiveExpiration(Duration.ofSeconds(20))))); |
|
|
|
|
|
|
|
|
|
return new JCacheCacheManager(jCacheManager); |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
@Bean |
|
|
|
|
public HibernatePropertiesCustomizer hibernatePropertiesCustomizer(CacheManager cacheManager) { |
|
|
|
|
return hibernateProperties -> hibernateProperties.put(org.hibernate.cache.jcache.ConfigSettings.CACHE_MANAGER, cacheManager); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|