如何在不使用xml的情况下使用Spring Boot 2和ehcache 3?

现在,我有以下配置:

@Configuration

@EnableCaching

public class EhcacheConfig {

@Bean

public CacheManager cacheManager() throws URISyntaxException {

return new JCacheCacheManager(Caching.getCachingProvider().getCacheManager(

getClass().getResource("/ehcache.xml").toURI(),

getClass().getClassLoader()

));

}

}

它引用以下XML:

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns="http://www.ehcache.org/v3"

xmlns:jsr107="http://www.ehcache.org/v3/jsr107"

xsi:schemaLocation="

http://www.ehcache.org/v3 http://www.ehcache.org/schema/ehcache-core-3.0.xsd

http://www.ehcache.org/v3/jsr107 http://www.ehcache.org/schema/ehcache-107-ext-3.0.xsd">

<cache alias="pow_cache">

<key-type>org.springframework.cache.interceptor.SimpleKey</key-type>

<value-type>java.lang.Double</value-type>

<expiry>

<ttl unit="seconds">15</ttl>

</expiry>

<listeners>

<listener>

<class>my.pack.CacheEventLogger</class>

<event-firing-mode>ASYNCHRONOUS</event-firing-mode>

<event-ordering-mode>UNORDERED</event-ordering-mode>

<events-to-fire-on>CREATED</events-to-fire-on>

<events-to-fire-on>EXPIRED</events-to-fire-on>

</listener>

</listeners>

<resources>

<heap unit="entries">2</heap>

<offheap unit="MB">10</offheap>

</resources>

</cache>

</config>

服务看起来像这样:

@Cacheable(value = "pow_cache", unless = "#pow==3||#result>100", condition = "#val<5")

public Double pow(int val, int pow) throws InterruptedException {

System.out.println(String.format("REAL invocation myService.pow(%s, %s)", val, pow));

Thread.sleep(3000);

return Math.pow(val, pow);

}

它可以正常工作,但我想摆脱xml配置。

2,但我将使用Eehcache 3

我该如何实现?

回答:

由于EhCache

似乎符合JSR-107,因此您需要以这种方式使用它来进行程序配置:

@Bean

public CacheManager cacheManager() throws URISyntaxException {

CachingProvider provider = Caching.getCachingProvider();

CacheManager cacheManager = provider.getCacheManager();

CacheConfigurationBuilder<SimpleKey, Double> configuration =

CacheConfigurationBuilder.newCacheConfigurationBuilder(org.springframework.cache.interceptor.SimpleKey.class,

java.lang.Double.class,

ResourcePoolsBuilder.heap(2).offheap(10, MemoryUnit.MB))

.withExpiry(Expirations.timeToLiveExpiration(new Duration(15, TimeUnit.SECONDS)));

Cache cache = cacheManager.createCache("pow_cache", configuration);

cache.getRuntimeConfiguration().registerCacheEventListener(listener, EventOrdering.UNORDERED,

EventFiring.ASYNCHRONOUS, EnumSet.of(EventType.CREATED, EventType.EXPIRED));

return cacheManager;

}

我自己还没有测试过,但这应该对您有用。

从EhCache存储库中查看更多带有配置选项的程序示例,以及有关如何以编程方式注册侦听器的文档部分。

以上是 如何在不使用xml的情况下使用Spring Boot 2和ehcache 3? 的全部内容, 来源链接: utcz.com/qa/404525.html

回到顶部