Spring Webflux Bean验证

时间:2017-06-02 19:05:52

标签: java spring validation spring-mvc spring-webflux

我有一个简单的休息控制器(使用spring web-FLUX ),它可以将bean保存在数据库中。但像往常一样,我想在保存之前验证它的一些字段。

我有一个在保存bean之前调用的验证方法。但是,我怎么能以更实用(和适当)的方式做到这一点?

我尝试过类似的事情:

public void save(Mono<MyBean> myBean) {
    myBean.map(this::validateBean).map(myRepository::save)
}

但是只有当我做

这样的事情时,才会调用方法 validateBean
public void save(Mono<MyBean> myBean) {
    myBean.map(this::validateBean)
          .map(myRepository::save)
          .subscribe();
}

我不知道订阅部分是否是最正确的部分(我相信它不是),但我认为它有效,因为它是一种终端操作。我是对的吗?

即便如此,这也无法解决我的问题,因为当bean出现问题时,我的验证方法会抛出 Business 异常。而这正是我想做的事。

[EDITED] 这是我的休息控制器,我会像:

@PostMapping(value = "/something")
public Mono<ResponseEntity> salvar(@RequestBody MyBean myBean) {
    return myService.salvar(myBean)
            .map(RestResponses::ok)
            .defaultIfEmpty(RestResponses.empty());
}

我知道这不起作用,因为我的服务没有任何回报。但我不知道什么是正确的方法。所以我只想发表一个想法。谢谢理解...

你们可以给我一些帮助吗?

0 个答案:

没有答案