@RestController
public class MovieController {

    private final MovieRepository movieRepository;

    public MovieController(MovieRepository movieRepository) {
        this.movieRepository = movieRepository;
    }

    // Notice the return type
    @GetMapping("/movies")
    public Flux getAllMovies() {
        return movieRepository.findAll();
    }
}

Quando os requisitos da aplicação exigem processamento de dados de alto rendimento, o WebFlux é a solução ideal.

Persistência Java com Spring Data

Spring Data é uma estrutura altamente sofisticada e com reconhecimento de persistência que foi refinada ao longo dos anos. Além de oferecer suporte à API Jakarta Persistence do Java, o Spring fornece acesso fácil a abordagens mais recentes, como a seguinte classe de repositório. Observe que esta classe não requer nenhuma anotação porque o Spring Boot reconhece que ela é uma subclasse de uma classe base de persistência:

import org.springframework.data.repository.reactive.ReactiveCrudRepository;

public interface MovieRepository extends ReactiveCrudRepository {
    
	// You define the method signature; Spring Data R2DBC provides the implementation
	Flux findByGenre(String genre);
}

Este código usa Spring R2DBC, uma biblioteca de conexão de banco de dados relacional que usa drivers reativos assíncronos. A beleza é que o próprio mecanismo fornece a implementação com base nos campos e métodos do objeto de dados; como desenvolvedor, você não precisa implementar o findByGenre método.