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

Spring Boot中编程式初始化RedissonClient实现Hibernate二级缓存遇问题

解决方案:编程式配置RedissonClient供Hibernate二级缓存使用

默认的RedissonRegionFactory会优先从配置文件加载Redisson配置,不会自动识别Spring容器中已创建的RedissonClient Bean。要实现编程式配置,需通过自定义RegionFactory关联Spring容器中的Bean:

1. 自定义Spring友好的RedissonRegionFactory

创建继承自RedissonRegionFactory的类,实现ApplicationContextAware接口,从Spring上下文获取已初始化的RedissonClient:

import org.hibernate.cache.CacheException;
import org.hibernate.cfg.Settings;
import org.redisson.api.RedissonClient;
import org.redisson.hibernate.RedissonRegionFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

public class SpringRedissonRegionFactory extends RedissonRegionFactory implements ApplicationContextAware {

    private static ApplicationContext applicationContext;

    @Override
    protected RedissonClient createRedissonClient(Settings settings) throws CacheException {
        return applicationContext.getBean(RedissonClient.class);
    }

    @Override
    public void setApplicationContext(ApplicationContext context) {
        applicationContext = context;
    }
}

2. 修改Hibernate配置,指定自定义RegionFactory

在application.properties(或application.yml)中配置Hibernate使用自定义的缓存工厂:

# 指定自定义的Redisson缓存工厂
spring.jpa.properties.hibernate.cache.region.factory_class=com.yourpackage.SpringRedissonRegionFactory
# 开启二级缓存和查询缓存(按需配置)
spring.jpa.properties.hibernate.cache.use_second_level_cache=true
spring.jpa.properties.hibernate.cache.use_query_cache=true

3. 修正Redisson配置类的方法名拼写错误

原配置类中方法名存在拼写错误(redissionClient多了一个s),修正后确保Spring能正确识别Bean:

@Configuration
@Lazy(false)
public class RedissonConfig {
    
    @Bean
    public RedissonClient redissonClient() {
        Config config = new Config();
        config.useSingleServer().setAddress("redis://127.0.0.1:6379");
        return Redisson.create(config);
    }
}

原理说明

自定义的SpringRedissonRegionFactory重写了createRedissonClient方法,跳过了默认的配置文件加载逻辑,直接从Spring容器中获取已通过编程方式初始化的RedissonClient实例,从而实现无需配置文件的Redisson集成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 00:45:12