Я начинаю с Flux сегодня, потому что он довольно мощный. Теперь я настроил целый простой проект Spring boot 2 для работы с ним, но возвращенные объекты пусты.
Я запустил очень простой проект Spring Boot с некоторыми зависимостями:
- Реактивная сеть (встроенный Netty + Spring WebFlux)
- Реактивная MongoDB (Spring Data MongoDB)
- Шаблонный движок Thymeleaf
- Ломбок (для упрощения написания POJO)
И добавил код:
контроллер:
@RestController
public class ChapterController {
@Autowired
private ChapterRepository repository;
@GetMapping("/chapters")
public Flux<Chapter> listing() {
return repository.findAll();
}
}
Repository:
public interface ChapterRepository extends ReactiveCrudRepository<Chapter, String> {}
Конфигурация: (для загрузки некоторых данных во встроенный Mongodb)
@Configuration
открытый класс LoadDatabase {
@Bean
CommandLineRunner init(ChapterRepository repository){
return args -> {
Flux.just(
new Chapter("The life of Batman"),
new Chapter("Batmans most glorious' code"),
new Chapter("The hero we needed but didn't deserve, Batman."))
.flatMap(repository::save)
.subscribe(System.out::println);
};
}
}
Класс данных:
@Data
@Document
public class Chapter {
@Id
private String id;
private String name;
public Chapter(String name) {
this.name = name;
}
}
Хорошо, теперь, когда я запускаю приложение и получаю доступ к конечной точке: http://localhost:8080/chapters, возвращается:
[
{},
{},
{}
]
Показывает то же количество объектов, которое я создал в классе LoadDatabase
. Когда я изменяю количество созданных объектов, оно показывает это количество в конечной точке.
Я не знаю, что я сделал неправильно, я попытался отладить возвращенный объект потока. Но я ничего не могу из этого сделать.
Надеюсь, кто-то может заметить мою ошибку!