Spring Boot спрощує розробку реактивних веб-додатків, надаючи автоконфігурацію для Spring Webflux. у Spring Framework 5.0. На відміну від Spring MVC, він не вимагає наявності API сервлетів, є повністю асинхронним та неблокуючим, а також реалізує специфікацію Reactive Streams через проект Reactor.

Spring WebFlux поставляється у двох варіантах: на основі функціональної моделі та на основі анотацій. Модель, заснована на анотаціях, досить близька до моделі Spring MVC, як показано в наступному прикладі:

block-title">Java
import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/users") public class MyRestController { private final UserRepository userRepository; private final CustomerRepository customerRepository; public MyRestController(UserRepository userRepository, CustomerRepository customerRepository) { this.userRepository = userRepository; this.customerRepository = customerRepository; } @GetMapping("/{userId}") public Mono<User> getUser(@PathVariable Long userId) { return this.userRepository.findById(userId); } @GetMapping("/{userId}/customers") public Flux<Customer> getUserCustomers(@PathVariable Long userId) { return this.userRepository.findById(userId).flatMapMany(this.customerRepository::findByUser); } @DeleteMapping("/{userId}") public Mono<Void> deleteUser(@PathVariable Long userId) { return this.userRepository.deleteById(userId); } }