【发布时间】:2019-11-11 16:14:46
【问题描述】:
我刚开始使用基于项目反应器的响应式框架,例如 spring-webflux,对此我有一些疑问。
问题 1:
示例 1:
public Mono<String> doSome(String str){
String key = str.substring(0, 5).toLowerCase() + str.substring(6);
return getValueFromRedis(key);
}
public Mono<String> getValueFromRedis(String key){
return reactiveRedisOperations().opsForHash().get("TestCache", key);
}
示例 2:
public Mono<String> doSome(String str){
return Mono.fromCallable(() -> {
String key = str.substring(0, 5).toLowerCase() + str.substring(6);
return getValueFromRedis(key);
}).flatMap(stringMono -> stringMono);
}
public Mono<String> getValueFromRedis(String key){
return reactiveRedisOperations().opsForHash().get("TestCache", key);
}
两个例子之间有区别还是两者都可以接受。
问题 2:
示例 1:
@PostMapping(value = "/greet")
public Mono<String> greet(String name) {
return Mono.fromCallable(() -> aMethod(name));
// or return Mono.just(aMethod(name));
}
public String aMethod(String name){
return "Hello: " + name;
}
示例 2:
@PostMapping(value = "/greet")
public Mono<String> greet(String name) {
return aMethod(name);
}
public Mono<String> aMethod(String name){
return Mono.just("Hello: " + name);
}
我知道第二个问题很奇怪,但我想知道所有方法都应该返回 Mono 或 Flux 还是可以像 Question2/Example1 一样使用。
【问题讨论】:
-
删除
.flatMap(stringMono -> stringMono)- 这没有任何意义。
标签: java spring-boot project-reactor