Я недавно на реактивной основе, основанной на проекте-реакторе, такой как 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.