当前位置: 首页 > 知识库问答 >
问题:

Spring Boot 2.0无法将Caffeine用作缓存提供程序

李敏学
2023-03-14

我使用web和缓存依赖项创建Spring Boot2.0 Starter项目:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-cache</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

然后我更新了Spring bootstrap类来测试REST服务缓存:

@SpringBootApplication
@EnableCaching
@RestController
@RequestMapping
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @GetMapping
    @Cacheable("hello")
    public String hello() {
        return "1";
    }
}
spring.cache.type=simple
<dependency>
    <groupId>com.github.ben-manes.caffeine</groupId>
    <artifactId>caffeine</artifactId>
</dependency>

spring.cache.type=caffeine

该应用程序启动失败后出现异常:

原因:java.lang.IllegalArgumentException:无法自动配置缓存管理器,请检查您的配置(缓存类型为“Caffeine”)(在org.springframework.util.assert.notnull(assert.java:193)~[spring-core-5.0.4.release.jar:5.0.4.release](在org.springframework.boot.autocigure.cache.cacheautociguration

我试图在application.properties中提供缓存名称,但没有帮助。

spring.cache.cache-names=hello

请指教。

共有1个答案

程智明
2023-03-14

添加以下依赖项:

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context-support</artifactId>
  <version>5.0.8.RELEASE</version>
</dependency>
 类似资料:
  • 我正在尝试实现一个提供程序,它按以下顺序在内存、磁盘、网络中查找项目。这样做的主要目的是,如果我有正确的本地缓存,就可以避免网络调用。有一个陷阱,因为我对网络的调用使用过滤器来获取项目,我可以从本地查询中获得10个项目,但仍然需要转到网络,因为这些项目来自不同的网络调用,具有不同的查询参数。 现在,我正在将concat与firstOrDefault一起使用,检查列表是否为null或空。我已经实现了

  • null 如在第一个链接中所回答的,尝试类路径 正如第二个链接中所回答的,尝试了Multidex也没有成功。 注意:示例代码正在运行。 更新: 有趣的是,即使我只添加依赖项,也会出现同样的错误

  • 在和之后 在启动应用程序时,我开始得到以下错误: 在下一行中还添加了:

  • 在使用JPA时,Hazelcast是否支持Hibernate的分布式和远程二级缓存? 我有客户机/服务器体系结构,我的问题是使用JPA的数据访问操作在客户端。。。,当缓存是远程服务器时。 请给我一个代码样本,让我在两边都做?(在JPA侧和Hazelcast侧) 非常感谢!

  • 对于Jcache配置,我们需要有通用的XML配置参数(如timetolive)<我们正在使用EhCache进行开发,并可能在其他环境中使用其他符合Jsr107的缓存提供程序,如Infinispan。 是否可以让两个缓存提供程序都使用一个配置文件,并且如果需要,我们只需要为不同的环境更改一些参数? 可以在属性文件中定义这些属性并使用它们根据配置文件初始化缓存管理器吗? 我浏览了jsr107留档,但没

  • 我正在构建一个应用程序,其中我使用的是来自此教程链接的融合提供程序代码,但当我想运行我的应用程序时,我收到以下错误: com.android.build.api.transform.transformException:com.android.ide.common.Process.processException:org.gradle.Process.internal.execexception: