方法引用中的java错误返回类型:无法转换反应器。果心出版商单核反应堆。果心出版商单声道?扩展R>
我有两个Mono
-s,如果其中一个不是空的(用户已经存在),我想返回/抛出一个异常,或者基于另一个返回一个Mono<User>
值(将设置和DTO数据复制到用户对象)。我写道:
public Mono<User> registerUser(UserRegistrationDto userRegistrationDto) {
Mono<Settings> settingsMono = settingsService.getSettings();
Mono<User> dbUserMono = userRepository.findByEmail(userRegistrationDto.getEmail());
return dbUserMono.map(dbUser -> Mono.error(new AlreadyRegisteredException())).or(
settingsMono.map(
settings -> validateDtoAndCreateUser(userRegistrationDto, settings)
).flatMap(userRepository::save)
);
userRepository是一个Spring数据反应MongoRepository。validateDtoAndCreateUser的签名是:private User validateDtoAndCreateUser(UserRegistrationDto userRegistrationDto, SiteSettings siteSettings)
不幸的是,在userRepository::save
我得到了:
Bad return type in method reference: cannot convert reactor.core.publisher.Mono<S> to reactor.core.publisher.Mono<? extends R>
我做错了什么?我是不是在用一个糟糕的操作员
# 1 楼答案
这样做: