Создание CacheManager из XMLConfiguration с использованием сервиса StatisticsService - PullRequest
1 голос
/ 04 февраля 2020

Я знаю, как создать CacheManager, используя XMLConfiguration в org.ehcache: ehcache: 3.8.1:

import org.ehcache.config.Configuration;
import org.ehcache.xml.XmlConfiguration;
import org.ehcache.config.builders.CacheManagerBuilder;
    .
    .
    .
    URL myUrl = CacheUtil.class.getResource("/my-config.xml");
    Configuration xmlConfig = new XmlConfiguration(myUrl);
    cacheManager = CacheManagerBuilder.newCacheManager(xmlConfig);
    cacheManager.init();

Я также знаю, как создать CacheManager с помощью StatisticsService:

StatisticsService statisticsService = new DefaultStatisticsService();
CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder()
      .using(statisticsService)
      .build();
cacheManager.init();

Но как мне создать CacheManager из XMLConfiguration, используя StatisticsService?

Ответы [ 2 ]

1 голос
/ 05 марта 2020

Вот пример кода, который демонстрирует использование базовых c API-интерфейсов конфигурации JCache:

 CachingProvider provider = Caching.getCachingProvider();  
CacheManager cacheManager = provider.getCacheManager();   
MutableConfiguration<Long, String> configuration =
    new MutableConfiguration<Long, String>()  
        .setTypes(Long.class, String.class)   
        .setStoreByValue(false)   
        .setExpiryPolicyFactory(CreatedExpiryPolicy.factoryOf(Duration.ONE_MINUTE));  
Cache<Long, String> cache = cacheManager.createCache("jCache", configuration); 
cache.put(1L, "one"); 
String value = cache.get(1L); 
  1. Извлекает реализацию CachingProvider по умолчанию из пути к классам приложения. Этот метод будет работать тогда и только тогда, когда в пути к классам будет только один jar-файл реализации JCache. Если в вашем classpath есть несколько провайдеров, используйте полное имя org.ehcache.jsr107.EhcacheCachingProvider для получения провайдера кэширования Ehcache. Вы можете сделать это, используя вместо этого метод Caching.getCachingProvider(String) stati c.

  2. Получить экземпляр CacheManager по умолчанию, используя провайдера.

  3. Создайте конфигурацию кэша, используя MutableConfiguration

  4. с типом ключа и типом значения как Long и String соответственно…

  5. сконфигурирован для хранения записей кэша по ссылке (не по значению)…

  6. и со временем истечения одной минуты, определенным для записей с момента их создания.

  7. Используя менеджер кеша, создайте кеш с именем jCache с конфигурацией, созданной на шаге <3>

  8. Поместите некоторые данные в кеш.

  9. Извлечение данных из того же кэша.
0 голосов
/ 03 марта 2020

Внутри класса EhcacheManager есть конструктор, который принимает 2 аргумента:

public EhcacheManager(Configuration config, Collection<Service> services)

Вы можете использовать его следующим образом:

URL myUrl = CacheUtil.class.getResource("/my-config.xml");
Configuration xmlConfig = new XmlConfiguration(myUrl);

StatisticsService statisticsService = new DefaultStatisticsService();
Set<Service> services = new HashSet<>();
services.add(statisticsService);

cacheManager = new EhcacheManager(xmlConfig, services);
...