My personal rule would be: Use WebFlux when your application is already reactive, when you need streaming, backpressure, or a fully non-blocking pipeline. Use Virtual Threads when you mainly need to ...