我有一个简单的 Spring 应用程序。我需要在一些每次调用都很昂贵的服务上实现缓存。
我有一个这样的配置类:
@Configuration
@EnableCaching
public class CachingConfig {
@Bean (name = "caffeineCacheManager")
public CacheManager cacheManager() {
CaffeineCacheManager cacheManager = new CaffeineCacheManager("projectList", "backlog", "childProjectList", "testRun");
cacheManager.setCaffeine(caffeineCacheBuilder());
return cacheManager;
}
Caffeine< Object, Object > caffeineCacheBuilder() {
return Caffeine.newBuilder()
.initialCapacity(100)
.maximumSize(500)
.expireAfterAccess(1, TimeUnit.MINUTES)
.weakKeys()
.recordStats();
}
}
我的pom.xml
包括:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>2.8.8</version>
</dependency>
我有一种需要像这样缓存的方法:
@Cacheable(value = "projectList", cacheManager = "caffeineCacheManager")
public Map<String, String> getProjectList() {
return getProjectList(); //**SOME EXPENSIVE CALL**
}
每次我运行应用程序时,我都会得到java.lang.NoClassDefFoundError: com/github/benmanes/caffeine/cache/Caffeine
.
这是完整的堆栈跟踪:https ://textuploader.com/1eil3 我不确定我在哪里做错了,或者我是否遗漏了什么。