反应性终点设计

时间:2017-11-06 01:55:40

标签: reactive-programming spring-webflux

我正在学习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个人。 (在chrome页面1上)
  • 然后获取所有人的列表(在chrome页面2上)
  • 然后再添加一个人(在chrome页面3上)

然后我回到第2页(没有刷新),我没有看到更新的人员名单,我应该吗?

另外,如何在这里进行UPDATE / DELETE操作?

1 个答案:

答案 0 :(得分:1)

我猜你指的是the reactive programming wikipedia page,也许在这个例子中读得太多了。 此示例(以及着名的电子表格)通常指向正在侦听用户事件和发布应用程序事件以更新UI的UI丰富的应用程序。

反应式编程和反应式流本身并不足以建立这样的基础架构。

在您的控制器中,执行操作并以反应方式发布值:具有背压支持和访问反应API以组成它们。呈现JSON响应后,客户端不会从服务器接收新元素。

您可以通过发布事件并在服务器和浏览器之间建立持久连接(例如SSE)来创建这样的系统。