有办法为 Spring Boot 3 配置 ehcache 2 吗?

问题描述 投票:0回答:2

我正在将一些遗留应用程序从 sb 2 (spring boot)迁移到 sb 3。应用程序正在使用 ehcache 和 xml 配置。在我的 cacheConfig 类中,我使用的是这样的东西:

import org.springframework.cache.ehcache.EhCacheCacheManager;


@Configuration
@EnableCaching
class Config {
    @Bean
    CacheManager cacheManager() {
        return new EhCacheCacheManager(ehCacheManager())
    }
 
    @Bean(destroyMethod = 'shutdown')
    net.sf.ehcache.CacheManager ehCacheManager() {
     
 URL url = ("/configFile.xml");
    return net.sf.ehcache.CacheManager.newInstance(url);
    }

但是导入 org.springframework.cache.ehcache.EhCacheCacheManager; Spring 上下文支持 6+ (Spring Boot 3) 中不再存在。

有什么办法可以解决这个问题吗?如何使用新的 Spring Boot 3 配置我的 ehcache?

java spring-boot migration ehcache
2个回答
1
投票
Spring Boot 3 中不再支持 ehcache 2 作为缓存提供程序。您必须将 ehcache 3 与 JSR-107 注释一起使用:

https://docs.spring.io/spring-boot/docs/3.0.8/reference /html/io.html#io


0
投票
我提到了以下迁移到 Ehcache 3 的步骤,它对我有用,希望对你有帮助!!

  1. 请将 ehcache.xml 更新为以下 XML 配置,因为当前 ehcache 3 版本支持此功能

    <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.ehcache.org/v3" xsi:schemaLocation="http://www.ehcache.org/v3 http://www.ehcache.org/schema/ehcache-core-3.10.xsd"> <cache alias="test_cache"> <expiry> <ttl unit="seconds">360000</ttl> </expiry> <resources> <heap unit="entries">300</heap> </resources> </cache> <cache alias="test_cache2"> <expiry> <ttl unit="seconds">3600000</ttl> </expiry> <resources> <heap unit="entries">300</heap> </resources> </cache></config>
    
    
  2. 创建一个简单的EhcacheConfig类

import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Configuration; @Configuration @EnableCaching public class EhCacheConfig { }

  1. 更新您的应用程序属性

    spring.cache.jcache.config=classpath:ehcache.xml

    
    

** 请注意 Ehcache 3 有自己的缓存驱逐算法,因此我们不必指定 LRU、LFU。 ** 您还可以根据您的使用情况在 ehcache.xml 中指定 offheap-unit 和磁盘选项。 如果对你有帮助的话请点赞!!

© www.soinside.com 2019 - 2024. All rights reserved.