Java无法将Reactor.core.publisher.MonoDefer转换为EntityClass

时间:2018-12-08 08:09:36

标签: java spring rx-java project-reactor

在这里,我尝试使用将返回Publisher的react-redis RedisTemplate来升级spring-data-redis ReactiveRedisTemplate。在这种情况下,我想将方法​​findCache更改为Mono。问题是旧的findCache函数,它使用spring-data-redis接受通用数据,如下所示:

@Autowired
ReactiveRedisTemplate redisTemplate;

public <T> T findCache(String key, Class<T> clazz) {
    Object content = this.redisTemplate.opsForValue().get(key);

    if (content != null) {
      return clazz.cast(content);
    }

    return null;
  }

我当然会出错

Cannot cast reactor.core.publisher.MonoDefer to Person

然后,由于我想让它起反应作用,因此我更新了此代码以返回发布者,如下所示:

if (content != null) {
      return ((Mono) content).flatMap(o -> clazz.cast(o));
    }

,但是自从我的findCache接受泛型以来,它也无法正常工作。 我该怎么办,请帮忙。

1 个答案:

答案 0 :(得分:0)

最好指定insertTransactionData参数。但是,如果不能,则应将内容类型更改为insertTransactionData。像这样:

ReactiveRedisTemplate

如果缓存不包含给定键的值,则它将返回空的Mono,而不是null。