java - Spring MVC 中的 Redisson Hibernate 2L 缓存配置问题

标签 java spring hibernate redis redisson

我正在尝试在 Spring MVC 项目中配置 Redisson Hibernate 2L 缓存。 我有以下教程,尽管其中大部分都是专门针对 Spring Boot 的。 我在 pom.xml 文件中添加了依赖项:

<dependency>
  <groupId>org.redisson</groupId>
  <artifactId>redisson</artifactId>
  <version>3.12.0</version>
</dependency>
<dependency>
  <groupId>org.redisson</groupId>
  <artifactId>redisson-hibernate-53</artifactId>
  <version>3.11.6</version>
</dependency>

在 persistance.xml 中(二级缓存目前设置为 false,因为我只尝试让它启动应用程序):

<property name="hibernate.cache.region.factory_class" value="org.redisson.hibernate.RedissonRegionFactory"/>
  <property name="hibernate.cache.use_second_level_cache" value="false"/>
  <property name="hibernate.cache.use_query_cache" value="false"/>

在我的配置文件中:

    @Bean(destroyMethod="shutdown")
  RedissonClient redisson() {
    Config config = new Config();
    config.useClusterServers()
            .addNodeAddress("redis://127.0.0.1:6379");
    return Redisson.create(config);
  }

  @Bean
  CacheManager cacheManager(RedissonClient redissonClient) throws IOException {
    Map<String, CacheConfig> config = new HashMap<>();
    config.put("testMap",
            new CacheConfig(120000, 180000)); //2min TTL and 3min max idle time
    return new RedissonSpringCacheManager(redissonClient, config);
  }

项目正在正确构建,但是当我尝试运行它时,我收到一个错误:

Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.cache.spi.CacheImplementor]
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:275)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:237)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214)
    at org.hibernate.service.internal.SessionFactoryServiceRegistryImpl.getService(SessionFactoryServiceRegistryImpl.java:97)
    at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:238)
    at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:462)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:938)
    at org.hibernate.jpa.HibernatePersistenceProvider.createContainerEntityManagerFactory(HibernatePersistenceProvider.java:141)
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365)
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:390)
    ... 63 more
Caused by: java.lang.IllegalStateException: Cache provider not started
    at org.hibernate.cache.spi.AbstractRegionFactory.verifyStarted(AbstractRegionFactory.java:65)
    at org.hibernate.cache.spi.support.RegionFactoryTemplate.buildTimestampsRegion(RegionFactoryTemplate.java:66)
    at org.hibernate.cache.internal.EnabledCaching.<init>(EnabledCaching.java:80)
    at org.hibernate.engine.spi.CacheInitiator.initiateService(CacheInitiator.java:33)
    at org.hibernate.engine.spi.CacheInitiator.initiateService(CacheInitiator.java:24)
    at org.hibernate.service.spi.SessionFactoryServiceInitiator.initiateService(SessionFactoryServiceInitiator.java:30)
    at org.hibernate.service.internal.SessionFactoryServiceRegistryImpl.initiateService(SessionFactoryServiceRegistryImpl.java:61)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263)
    ... 72 more
Caused by: org.hibernate.cache.CacheException: Unable to locate Redisson configuration
    at org.redisson.hibernate.RedissonRegionFactory.createRedissonClient(RedissonRegionFactory.java:107)
    at org.redisson.hibernate.RedissonRegionFactory.prepareForUse(RedissonRegionFactory.java:83)
    at org.hibernate.cache.spi.AbstractRegionFactory.start(AbstractRegionFactory.java:91)
    at org.hibernate.cache.internal.EnabledCaching.<init>(EnabledCaching.java:77)

我不知道为了找到 Redisson 配置我缺少什么? 我将不胜感激任何帮助!

最佳答案

您忘记定义 Redisson 配置的路径:

<property name="hibernate.cache.redisson.config" value="/redisson.yaml" />

关于java - Spring MVC 中的 Redisson Hibernate 2L 缓存配置问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59565939/

相关文章:

java - hibernate-添加到 Set 会导致 InvocableTargetException

java - Spring beans值注入(inject)

java - 非法尝试将代理与两个打开的 session 相关联

mysql - 多对多失败, 'on clause' 中的未知列

java - 更新多行 - Hibernate

java - 从 0.2.x 更新到 0.3.1 后的 Android Studio Gradle 错误

java - 将 .txt 文件读入二维数组列表

java - 映射 SQL-Server 日期时间列

java - 选择 BETWEEN 日期返回错误结果

java - 为什么在双重检查锁定中使用volatile