我阅读了ehcache 3的文档,它在spring cache的上下文中有点令人困惑。我的配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<ehcache:config updateCheck="true"
monitoring="autodetect"
dynamicConfig="true"
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:ehcache='http://www.ehcache.org/v3'
xmlns:jsr107='http://www.ehcache.org/v3/jsr107'
xsi:schemaLocation="
http://www.ehcache.org/v3/jsr107 http://www.ehcache.org/schema/ehcache-107-ext-3.0.xsd
http://www.ehcache.org/v3 http://www.ehcache.org/schema/ehcache-core-3.1.xsd">
<ehcache:annotation-driven />
<ehcache:service>
<service>
<jsr107:defaults enable-management="true" enable-statistics="true"/>
</service>
</ehcache:service>
<ehcache:cache alias="xyz" statistics="true">
<ehcache:key-type>java.lang.Long</ehcache:key-type>
<ehcache:value-type>a.b.c.something</ehcache:value-type>
<ehcache:expiry>
<ehcache:ttl unit="seconds">10</ehcache:ttl>
</ehcache:expiry>
<ehcache:resources>
<ehcache:heap unit="entries">10000</ehcache:heap>
<ehcache:offheap unit="MB">1</ehcache:offheap>
</ehcache:resources>
<jsr107:mbeans enable-statistics="true"/>
</ehcache:cache>
...
</ehcache:config>
cache:
jcache:
config: classpath*:ehcache.xml
我的yaml:
cache:
jcache:
config: classpath*:ehcache.xml
有点失去了我应该寻找的东西 - 我认为org.ehcache可以被分析并显示出来。我在jvisualvm中看不到任何有关该模式的内容。或者不确定如何阅读信息。曾经在ehcache 2.x中直截了当任何帮助将不胜感激。我想获得缓存的大小和数量。当前在缓存中的元素数量等。
答案 0 :(得分:0)
要确定如何回答需要spring配置和一些Java代码。但是,您当前的ehcache.xml
似乎是Ehcache 2和3的奇怪混合。yaml
是错误的。
因此,按顺序,您需要pom.xml
,包括JSR-107
<dependency>
<groupId>javax.cache</groupId>
<artifactId>cache-api</artifactId>
</dependency>
<dependency>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>3.4.0</version>
</dependency>
,application.yml
应该有一个spring
前缀。
spring:
cache:
jcache:
config: classpath:ehcache.xml
要启用缓存,您需要@EnableCaching
或<cache:annotation-driven/>
之类的内容,这些内容应该在Spring配置中,而不是ehcache.xml
。
最后,我已经清理了ehcache.xml
中不应该包含的所有内容。我还使用默认命名空间使其更具可读性。此外,由于Spring缓存是无类型的,因此您需要从缓存配置中删除key-type
和value-type
。
<?xml version="1.0" encoding="UTF-8"?>
<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/jsr107 http://www.ehcache.org/schema/ehcache-107-ext-3.0.xsd
http://www.ehcache.org/v3 http://www.ehcache.org/schema/ehcache-core-3.1.xsd">
<service>
<jsr107:defaults enable-management="true" enable-statistics="true"/>
</service>
<cache alias="xyz">
<expiry>
<ttl unit="seconds">10</ttl>
</expiry>
<resources>
<heap unit="entries">10000</heap>
<offheap unit="MB">1</offheap>
</resources>
<jsr107:mbeans enable-statistics="true"/>
</cache>
</config>