Ehcache 3 和 Spring 启动管理统计
Ehcache 3 and Spring Boot Admin statistics
我正在尝试将当前使用 Ehcache 2 的 Spring 引导项目迁移到最新的 Ehcache 3.7。
除了缺少 Spring 引导管理缓存统计信息外,一切似乎都很好。
这里是之前的Ehcache 2配置:
<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="ehcache.xsd"
updateCheck="false"
monitoring="on"
dynamicConfig="true"
statistics="true">
<cache name="asset"
maxEntriesLocalHeap="5"
timeToIdleSeconds="600"
timeToLiveSeconds="3600"
memoryStoreEvictionPolicy="LRU"/>
</ehcache>
以及新的 Ehcache 3 配置:
<?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 http://www.ehcache.org/schema/ehcache-core-3.6.xsd
http://www.ehcache.org/v3/jsr107 http://www.ehcache.org/schema/ehcache-107-ext-3.6.xsd">
<service>
<jsr107:defaults enable-management="true" enable-statistics="true"/>
</service>
<cache alias="asset">
<resources>
<heap unit="entries">5</heap>
</resources>
<expiry>
<ttl unit="hours">1</ttl>
</expiry>
<jsr107:mbeans enable-management="true" enable-statistics="true"/>
</cache>
</config>
POM 依赖项(仅与缓存管理相关的):
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-jcache</artifactId>
<version>5.4.1.Final</version>
</dependency>
<dependency>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>3.7.0</version>
</dependency>
Spring配置:
spring:
cache:
ehcache:
config: classpath:ehcache.xml
jpa:
properties:
hibernate:
dialect: org.hibernate.dialect.MySQL8Dialect
hbm2ddl:
auto: none
cache:
use_second_level_cache: true
region:
factory_class: jcache
javax:
cache:
provider: org.ehcache.jsr107.EhcacheCachingProvider
missing_cache_strategy: fail
我曾经使用 Ehcache 2 获取此类统计数据:
但是对于 Ehcache 3,SBA Insights/Details 页面和 Data/Caches 页面上都不会显示任何统计数据。
Ehcache 2 是即插即用的,但 Ehcache 3 似乎不是这样。
有人有提示吗?
谢谢!
已解决!愚蠢的错误...
在 spring 配置中,而不是:
spring:
cache:
ehcache:
config: classpath:ehcache.xml
我不得不将它与 Ehcache 3 一起使用:
spring:
cache:
jcache:
config: classpath:ehcache.xml
并定义一个 bean:
@Bean
public HibernatePropertiesCustomizer hibernateSecondLevelCacheCustomizer(
JCacheCacheManager cacheManager) {
return (properties) -> properties.put(ConfigSettings.CACHE_MANAGER,
cacheManager.getCacheManager());
}
现在通过 SBA 中的执行器和 JMX 可以很好地报告缓存 :)
我正在尝试将当前使用 Ehcache 2 的 Spring 引导项目迁移到最新的 Ehcache 3.7。
除了缺少 Spring 引导管理缓存统计信息外,一切似乎都很好。
这里是之前的Ehcache 2配置:
<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="ehcache.xsd"
updateCheck="false"
monitoring="on"
dynamicConfig="true"
statistics="true">
<cache name="asset"
maxEntriesLocalHeap="5"
timeToIdleSeconds="600"
timeToLiveSeconds="3600"
memoryStoreEvictionPolicy="LRU"/>
</ehcache>
以及新的 Ehcache 3 配置:
<?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 http://www.ehcache.org/schema/ehcache-core-3.6.xsd
http://www.ehcache.org/v3/jsr107 http://www.ehcache.org/schema/ehcache-107-ext-3.6.xsd">
<service>
<jsr107:defaults enable-management="true" enable-statistics="true"/>
</service>
<cache alias="asset">
<resources>
<heap unit="entries">5</heap>
</resources>
<expiry>
<ttl unit="hours">1</ttl>
</expiry>
<jsr107:mbeans enable-management="true" enable-statistics="true"/>
</cache>
</config>
POM 依赖项(仅与缓存管理相关的):
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-jcache</artifactId>
<version>5.4.1.Final</version>
</dependency>
<dependency>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>3.7.0</version>
</dependency>
Spring配置:
spring:
cache:
ehcache:
config: classpath:ehcache.xml
jpa:
properties:
hibernate:
dialect: org.hibernate.dialect.MySQL8Dialect
hbm2ddl:
auto: none
cache:
use_second_level_cache: true
region:
factory_class: jcache
javax:
cache:
provider: org.ehcache.jsr107.EhcacheCachingProvider
missing_cache_strategy: fail
我曾经使用 Ehcache 2 获取此类统计数据:
但是对于 Ehcache 3,SBA Insights/Details 页面和 Data/Caches 页面上都不会显示任何统计数据。
Ehcache 2 是即插即用的,但 Ehcache 3 似乎不是这样。
有人有提示吗?
谢谢!
已解决!愚蠢的错误...
在 spring 配置中,而不是:
spring:
cache:
ehcache:
config: classpath:ehcache.xml
我不得不将它与 Ehcache 3 一起使用:
spring:
cache:
jcache:
config: classpath:ehcache.xml
并定义一个 bean:
@Bean
public HibernatePropertiesCustomizer hibernateSecondLevelCacheCustomizer(
JCacheCacheManager cacheManager) {
return (properties) -> properties.put(ConfigSettings.CACHE_MANAGER,
cacheManager.getCacheManager());
}
现在通过 SBA 中的执行器和 JMX 可以很好地报告缓存 :)