我有一个简单的休息控制器(使用 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出现问题时,我的验证方法会引发业务异常。这正是我想做的。
[编辑] 这是我的休息控制器,我会像这样:
@PostMapping(value = "/something")
public Mono<ResponseEntity> salvar(@RequestBody MyBean myBean) {
return myService.salvar(myBean)
.map(RestResponses::ok)
.defaultIfEmpty(RestResponses.empty());
}
我知道这不起作用,因为我的服务没有返回任何东西。但我不知道正确的方法是什么。所以我只是发布一个想法。感谢您的理解...
你们能给我一些帮助吗?