我有一个简单的休息控制器(使用spring web-FLUX ),它可以将bean保存在数据库中。但像往常一样,我想在保存之前验证它的一些字段。
我有一个在保存bean之前调用的验证方法。但是,我怎么能以更实用(和适当)的方式做到这一点?
我尝试过类似的事情:
public void save(Mono<MyBean> myBean) {
myBean.map(this::validateBean).map(myRepository::save)
}
但是只有当我做
这样的事情时,才会调用方法 validateBeanpublic 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());
}
我知道这不起作用,因为我的服务没有任何回报。但我不知道什么是正确的方法。所以我只想发表一个想法。谢谢理解...
你们可以给我一些帮助吗?