业务逻辑验证模式和建议
2022-09-02 09:48:28
我的应用程序中有两层验证。首先是通过 Bean 验证 API 执行的实体验证(例如必填字段)。第二个级别是业务逻辑验证。例如,用户有一个帖子。只有当用户是此帖子的创建者并且帖子评级< 50 时,他才能删除帖子。所以我必须做这样的事情:
if (post.getCreator().equals(session.getUser())) {
if (post.getRating() < 50) {
postRepository.delete(post);
} else errors.add(400, "Cant delete post with rating 50 or higher")
} else errors add (400, "You should be owner of the post")
我不喜欢这种方式,因为这个条件是重用的,我必须复制代码。此外,如果条件数大于 5 左右,则读取和理解代码变得不真实。
此外,标准的Spring Validator不会很有帮助,因为我必须在不同的操作(例如删除和更新)上为一个实体进行不同的验证。
所以我正在寻找一种方法来以更聪明的方式做到这一点(也许是模式),如果有人能给我一个提示,我将不胜感激。
提前致谢!