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

Spring Boot 2.2.1升级Hazelcast 4.0后Spring Session编译失败求解决方案

解决Spring Boot 2.2.1适配Hazelcast 4.0的Spring Session编译问题

我之前在升级Spring Boot应用到Hazelcast 4.0时也踩过这个坑,刚好能帮到你!核心问题是你当前使用的spring-session-hazelcast版本和Hazelcast 4.0不兼容——Hazelcast 4.0把IMap这类核心API从com.hazelcast.core迁移到了com.hazelcast.map包,而旧版Spring Session Hazelcast还是引用的旧包路径,直接导致编译报错。

下面是具体的修复步骤:

1. 升级Spring Session Hazelcast到兼容版本

Spring Session Hazelcast 2.3.x及以上版本才正式支持Hazelcast 4.0。但你的Spring Boot 2.2.1默认依赖的是Spring Session 2.2.x(不兼容Hz4),所以需要手动指定spring-session-hazelcast的版本:

  • Maven项目,修改pom.xml:

    <dependency>
        <groupId>org.springframework.session</groupId>
        <artifactId>spring-session-hazelcast</artifactId>
        <version>2.3.2.RELEASE</version> <!-- 稳定兼容Hz4的版本 -->
    </dependency>
    
  • Gradle项目,修改build.gradle:

    implementation 'org.springframework.session:spring-session-hazelcast:2.3.2.RELEASE'
    

2. 锁定Hazelcast版本避免依赖冲突

Spring Boot 2.2.1默认的Hazelcast版本低于4.0,所以需要确保项目中Hazelcast的依赖是4.0,且不会被Spring Boot的依赖管理覆盖:

  • Maven,添加到dependencyManagement:

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.hazelcast</groupId>
                <artifactId>hazelcast</artifactId>
                <version>4.0</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
    
  • Gradle,直接指定版本:

    implementation 'com.hazelcast:hazelcast:4.0'
    

3. 调整自定义Hazelcast配置(如果有)

Hazelcast 4.0对部分API做了调整,如果你自定义了Hazelcast实例的配置(比如会话存储的IMap索引),需要适配新API:

比如之前的索引配置可能需要改成这样:

@Bean
public HazelcastInstance hazelcastInstance() {
    Config config = new Config();
    MapConfig sessionMapConfig = new MapConfig("spring:session:sessions");
    
    // 适配Hazelcast 4.0的索引配置API
    sessionMapConfig.addIndexConfig(new IndexConfig(IndexType.HASH, "principalName"));
    sessionMapConfig.addIndexConfig(new IndexConfig(IndexType.HASH, "expireTime"));
    
    config.addMapConfig(sessionMapConfig);
    return Hazelcast.newHazelcastInstance(config);
}

额外说明

Spring Session 2.3.x是兼容Spring Boot 2.2.x的,所以不用担心升级后和Spring Boot核心功能冲突。如果后续你把Spring Boot升级到2.3.x及以上,就不需要手动指定Spring Session的版本了,因为Spring Boot 2.3+默认依赖的Spring Session版本已经支持Hazelcast 4.0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 16:22:51