0

我有一个简单的 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 我不确定我在哪里做错了,或者我是否遗漏了什么。

4

1 回答 1

0

我分析了您的代码,我认为问题可能与某些具有旧版本咖啡因的库有关。检查依赖树

于 2020-12-16T21:11:00.883 回答