CacheManager с Ehcache 3.7 - ошибка «Не удается найти кэш с именем ...» - PullRequest
0 голосов
/ 30 мая 2019

Я пытаюсь использовать Ehcache 3.7, без конфигурации XML (ehcache.xml) , поскольку свойства кэша должны управляться для различных сред и должны быть гибкими.

Но я не могу понять, как заставить его работать, поскольку я получаю «Не могу найти кэш с именем« rules »для Builder ...».

В моих журналах я вижу, что «Кэш»правила, созданные в EhcacheManager.А вот мой код -

Метод реализации My Service -

@Override
    @Cacheable(value = "rules", key = "#rulesName + #ruleStatus")
    public RulesResponse getCallSegmentationRules(String[][] rulesName, String ruleStatus) {
        // returns RulesResponse object
...

Мой класс CacheConfig -

@Slf4j
@Configuration
@EnableCaching
public class EhcacheConfiguration {


    @Bean
    public CacheManager cacheManager() {
        return CacheManagerBuilder.newCacheManagerBuilder()
                .withCache("rules", cacheConfiguration())
                .build(true);
    }


    public CacheEventListenerConfigurationBuilder cacheEventListenerConfigurationBuilder() {
        CacheEventListenerConfigurationBuilder cacheEventListenerConfiguration = CacheEventListenerConfigurationBuilder
                .newEventListenerConfiguration(new EhcacheEventListener(),
                        EventType.CREATED,
                        EventType.UPDATED,
                        EventType.EVICTED,
                        EventType.REMOVED,
                        EventType.EXPIRED)
                .unordered().asynchronous();
        return cacheEventListenerConfiguration;
    }

    public CacheConfiguration cacheConfiguration() {
        CacheConfiguration<String, RulesResponse> configurationBuilder =
                CacheConfigurationBuilder.newCacheConfigurationBuilder(String.class,
                        RulesResponse.class,
                        ResourcePoolsBuilder.newResourcePoolsBuilder()
                                .heap(10, MemoryUnit.MB))
                        .add(cacheEventListenerConfigurationBuilder())
                        .withExpiry(ExpiryPolicyBuilder.timeToLiveExpiration(Duration.ofSeconds(10)))
                        .build();
        log.info("Created EhcacheConfiguration");
        return configurationBuilder;
    }

}

Я переопределяю - spring.main.allow-bean-definition-overriding=true

Это приводит к тому, что «Невозможно найти имя кэша« правила »».Но в журналах говорится, что в EhcacheManager был создан кэш «правил».

Долго работал с этим, просто не могу понять, что мне не хватает.

...