10 Şubat 2020 Pazartesi

SpringCache EhCache 3

Giriş
Şu satırı dahil ederiz.
import org.springframework.cache.jcache.JCacheCacheManager;
EhCache İle CacheManager Yaratmak
Örnek
Şöyle yaparız. init() metodu çağrılmalıdır.
URL myUrl = getClass().getResource("/configs/docs/getting-started.xml"); 
XmlConfiguration xmlConfig = new XmlConfiguration(myUrl); 
CacheManager myCacheManager = CacheManagerBuilder.newCacheManager(xmlConfig); 
myCacheManager.init();  
constructor - javax.cache.CacheManager
Örnek
Şöyle yaparızorg.ehcache.config.builders.CacheManagerBuilder sınıfı EhCache projesine aittir.
@Bean
public CacheManager cacheManager() {
  CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder().build(true);
  JCacheCacheManager jCacheCacheManager = new JCacheCacheManager(cacheManager);
  return jCacheCacheManager;
}
Örnek
Bu örnekte ehcache.xml proje dışında bir yerde bulunuyor.
Şu satırı dahil ederiz.
import javax.cache.Caching;
Şöyle yaparız. Bu örnekte CacheManagerBuilder veya JCacheManagerFactoryBean kullanılmadan direkt Caching.getCachingProvider() ile bir CacheManager nesnesi yaratılıyor. Bence kötü bir kullanım.
@Value("${myproject.cache.ehcache.xml.fullpath:/dir/out/ofproject/config/ehcache.xml}")
private String ehcacheXmlFullPath;

@Bean
public CacheManager cacheManager() throws URISyntaxException {
  // To get from the classpath: getClass().getResource("/ehcache.xml").toURI()
  return new JCacheCacheManager(Caching.getCachingProvider().getCacheManager(
    Paths.get(ehcacheXmlFullPath).toUri(),getClass().getClassLoader()));
}
setCacheManager metodu - javax.cache.CacheManager
Örnek
Şöyle yaparız. Bu örnekte org.ehcache.config.builders.CacheManagerBuilder sınıfı tarafından yaratılan CacheManager yerine JCacheManagerFactoryBean sınıfı kullanılıyor.
@Configuration
public class EhcacheConfiguration {

  @Bean
  public JCacheManagerFactoryBean jCacheManagerFactoryBean() throws IOException {
    JCacheManagerFactoryBean jCacheManagerFactoryBean = new JCacheManagerFactoryBean();
    jCacheManagerFactoryBean.setCacheManagerUri(new ClassPathResource("ehcache.xml")
      .getURI());
    return jCacheManagerFactoryBean;
  }

  @Bean(name = "ehcacheManager")
  public JCacheCacheManager jCacheCacheManager(@Qualifier("jCacheManagerFactoryBean")
     CacheManager jCacheManagerFactoryBean) {
    JCacheCacheManager jCacheCacheManager = new JCacheCacheManager();
    jCacheCacheManager.setCacheManager(jCacheManagerFactoryBean);
    return jCacheCacheManager;
  }
}
Diğer
ehcache.xml
Örnek
Şöyle yaparız.
<config
  xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
  xmlns='http://www.ehcache.org/v3'
  xsi:schemaLocation="http://www.ehcache.org/v3
                      http://www.ehcache.org/schema/ehcache-core.xsd">

  <cache alias="cache_10s">
    <expiry>
      <ttl unit="seconds">10</ttl>
    </expiry>
    <heap unit="entries">10000</heap>
  </cache>

  <cache alias="cache_30s">
    <expiry>
      <ttl unit="seconds">30</ttl>
    </expiry>
    <heap unit="entries">10000</heap>
  </cache>
</config>

Hiç yorum yok:

Yorum Gönder