В проектном реакторе (и в реактивном программировании в целом, в некоторой степени) все происходит в два этапа:
- Настройка реактивного конвейера
- Фактическое выполнение этогоконвейер, как только
Subscriber
подписывается на него
В вашем случае вызов method1
выполняет этот метод, а ваш System.out.println
выполняется, как ожидается.
Если вы хотитечтобы увидеть больше в соответствии с выполнением конвейера, вы можете попробовать:
private static Mono<String> method1() {
return Mono.defer(() -> {
System.out.println("test3");
return Mono.empty()
});
}
Оператор Mono.defer
будет откладывать эту операцию до подписки на конвейер.
Существуют лучшие способыдостигните этого, хотя:
- вы можете использовать один из множества
DoOnXYZ
операторов, которые предназначены для таких побочных действий, как - , вы можете использовать оператор
log()
дляполучить лучшее представление о том, что здесь происходит (подписка, противодавление и т. д.).