带有Ehcache 3.7的CacheManager-“无法找到名为...的缓存”错误

时间:2019-05-29 22:42:28

标签: spring-boot ehcache-3

我正尝试使用没有XML配置(ehcache.xml)的 Ehcache 3.7 ,因为该缓存的属性要针对不同的环境进行管理并且要灵活。

>

但是我无法弄清楚如何使其工作,因为我正在获得“无法为Builder生成名为'rules'的高速缓存...'。

在我的日志中,我看到了在EhcacheManager中创建的“缓存规则”。这是我的代码-

我的服务实施方法-

@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中创建。

已经花了很长时间处理这个,只是无法弄清楚我错过了什么。

0 个答案:

没有答案