在 Spring 4.2 的 EhCacheManager 上获取 class not found 异常

Getting class not found exception on EhCacheManager in Spring 4.2

无法解决以下错误:

Cannot find class [org.springframework.cache.ehcache.EhCacheCacheManager]

我正在使用 Spring 4.2.4 和 Ehcache 3.1.3。

Maven 依赖项:

<dependency>
    <groupId>org.ehcache</groupId>
    <artifactId>ehcache</artifactId>
    <version>3.1.3</version>
</dependency>

Bean 配置:

<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
    <property name="cacheManager">
        <bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
            <property name="configLocation" value="/WEB-INF/ehcache.xml"/>
        </bean>
    </property>
</bean>

不确定缺少什么。任何帮助将不胜感激。

您缺少的依赖项是:

<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.3.3.RELEASE</version>

如果您在看到 ClassNotFoundException 后发现自己在寻找正确的依赖项,您的第一点应该始终是:

Find dependency by classname

虽然这不是当前的问题,但一旦修复它就会遇到:

目前 Spring 中没有对 Ehcache 3 的原生支持。它只能通过 JCache 支持获得。

Ehcache 3.x 是 Ehcache 2.x 和包的重大更改,class 名称和配置格式都已更改。

因此 org.springframework.cache.ehcache.EhCacheCacheManager 将无法与 Ehcache 3 一起使用。

我在 Spring 中做了一个 talk on using Ehcache 3,详细说明了不同的集成可能性。