You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot 2.x技术问题咨询:InfinispanCacheManager异常及启动疑问

Spring Boot 2.x + Infinispan 问题解答

嗨,咱们一步步来解决你遇到的这几个问题,结合我平时排查这类场景的经验,给你梳理下具体的思路和解决方案:

1. InfinispanCacheManager无法正常工作的排查思路

这个问题我碰到过不少,常见的原因和修复方向主要有这几个:

  • 依赖配置不完整:Spring Boot 2.x集成Infinispan必须同时引入spring-boot-starter-cache和infinispan-spring-boot-starter,少了任何一个,自动配置逻辑都不会触发。你可以检查下你的依赖文件(pom.xml或build.gradle),确保包含这两个依赖,比如Maven的配置:
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-cache</artifactId>
    </dependency>
    <dependency>
        <groupId>org.infinispan</groupId>
        <artifactId>infinispan-spring-boot-starter</artifactId>
        <version>匹配Spring Boot的版本</version>
    </dependency>
    
  • 缓存配置错误或缺失:如果是自定义CacheManager,一定要在配置类上加上@EnableCaching注解,不然Spring的缓存切面不会生效。另外要注意模式选择——嵌入式模式用DefaultCacheManager,远程模式用RemoteCacheManager,别搞混了。比如嵌入式模式的基础配置:
    @Configuration
    @EnableCaching
    public class InfinispanCacheConfig {
        @Bean
        public DefaultCacheManager cacheManager() {
            return new DefaultCacheManager();
        }
    }
    
  • 版本兼容性问题:Spring Boot 2.x的不同小版本对Infinispan的版本有严格要求,比如Spring Boot 2.3.x对应Infinispan 11.x,2.4.x对应12.x,版本不匹配很容易出现类加载失败、初始化异常这类问题,一定要对照官方的版本兼容表来选版本。

2. Metrics端点无法正常工作的解决办法

要让Infinispan的指标能通过Actuator的/metrics端点暴露出来,得从这几个方面检查:

  • 缺失必要依赖:除了基础的缓存依赖,还要引入spring-boot-starter-actuator(启用Actuator端点)和infinispan-metrics(Infinispan的metrics支持),这两个依赖缺一不可。
  • 端点未正确暴露:Spring Boot 2.x默认只对外暴露/health和/info端点,要让/metrics能访问,得在配置文件里加上:
    management.endpoints.web.exposure.include=metrics,health
    management.endpoint.metrics.enabled=true
    
  • Infinispan Metrics未启用:需要手动开启Infinispan的metrics采集功能,嵌入式模式可以在配置类里设置:
    @Bean
    public DefaultCacheManager cacheManager() {
        ConfigurationBuilder configBuilder = new ConfigurationBuilder();
        configBuilder.metrics().enable(true);
        return new DefaultCacheManager(configBuilder.build());
    }
    
    如果用starter的自动配置,也可以直接在application.properties里加:
    infinispan.metrics.enabled=true
    

3. Infinispan的默认启动方式说明

分两种场景来说明:

Spring Boot集成下的默认启动

当你引入infinispan-spring-boot-starter和spring-boot-starter-cache后,Spring Boot会自动以**嵌入式模式(Embedded Mode)**启动Infinispan:

  • 自动创建一个DefaultCacheManager实例,使用Infinispan的默认配置:本地堆内存储、无持久化、无过期/驱逐策略(除非你手动配置)。
  • 自动将这个CacheManager注册到Spring容器中,你可以直接用@Cacheable、@CacheEvict等注解来使用缓存,默认会使用名为default的缓存(如果没指定缓存名称的话)。

原生Infinispan的默认启动

如果不通过Spring Boot,直接初始化DefaultCacheManager,默认也是嵌入式模式,启动一个本地缓存实例,没有集群功能,缓存条目默认会一直存在于堆内存中,直到应用停止或者手动清除。

内容的提问来源于stack exchange,提问作者PANKAJ kSHARMA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:15:57