java - 完整对象图上的 DDD 验证
问题描述
@Value
@Builder
public class Parent {
@NotNull
private String firstName;
private Child child;
@Builder
public class Child {
@NotNull
private String firstName;
这是我的挑战,我们正在做 DDD,我们在构造函数中或通过构建方法(构建器模式)对对象进行验证。我想要实现的是能够以我可以收集所有验证错误的方式构建完整的对象树。
正如您在下面的代码中看到的那样,我将只收集孩子缺少父母名字的错误。
请注意,这些对象是手动创建的,否则,我只会添加@Valid 等,但我认为当您手动构建对象时这不起作用。
仅供参考:我使用弹簧靴堆栈。
Parent.builder()
.firstName(null)
.child(Child.builder()
.firstName(null)
.build())
.build();
解决方案
我通常将验证模型和域模型分开。
例如,我对表示请求正文的视图应用验证(请参阅此处的此类验证示例),然后仅在确定验证通过后才尝试实例化值对象。在您的情况下,这意味着您会将注释放在视图上,而不是 VO 上。
请注意,在 VO 上应用验证是没有意义的:您能够创建它的事实意味着所有约束都已得到满足。
推荐阅读
- ssh - 当我尝试通过 gitlab 执行自动部署时检索数据时出现的问题
- python - 错误:ModuleNotFoundError:没有名为“DataSynthesizer”的模块
- karate - 有没有办法在 karate-tags.html 中查看格式为 @env=a 或 @service=b 的标签的非截断版本?
- python - 如何在 docker 中运行 venv?
- python-3.x - 使用 python 从长时间运行的可执行文件中获取实时输出
- c# - 如何在 C# 代码中执行 Create Trigger SQL 语句
- .htaccess - HTACCESS - 获取没有文件名的路径
- javascript - setState 也在更新其他状态
- vba - 通过 VBA 发送时如何从已发送文件夹中删除电子邮件
- android-studio - 当覆盖应用程序处于活动状态时,后退箭头被禁用