我正在学习WebFlux。 Wiki说反应式编程是:
例如,在命令式编程设置中, a:= b + c 表示 a 被分配 b + c 在评估表达式的瞬间,之后, b 和/或 c 的值可以通过无效更改值 a 。
但是,在反应式编程中, a 的值是 只要 b 和/或 c 的值发生变化,会自动更新;没有程序必须重新执行句子 a:= b + c ,以确定当前指定的 a 值。
确定。当我再现example like时:
@RestController
public class PersonController {
private final PersonRepository repository;
public PersonController(PersonRepository repository) {
this.repository = repository;
}
@PostMapping("/person")
Mono<Void> create(@RequestBody Publisher<Person> personStream) {
return this.repository.save(personStream).then();
}
@GetMapping("/person")
Flux<Person> list() {
return this.repository.findAll();
}
@GetMapping("/person/{id}")
Mono<Person> findById(@PathVariable String id) {
return this.repository.findOne(id);
}
}
然后我回到第2页(没有刷新),我没有看到更新的人员名单,我应该吗?
另外,如何在这里进行UPDATE / DELETE操作?
答案 0 :(得分:1)
我猜你指的是the reactive programming wikipedia page,也许在这个例子中读得太多了。 此示例(以及着名的电子表格)通常指向正在侦听用户事件和发布应用程序事件以更新UI的UI丰富的应用程序。
反应式编程和反应式流本身并不足以建立这样的基础架构。
在您的控制器中,执行操作并以反应方式发布值:具有背压支持和访问反应API以组成它们。呈现JSON响应后,客户端不会从服务器接收新元素。
您可以通过发布事件并在服务器和浏览器之间建立持久连接(例如SSE)来创建这样的系统。