存在关于 DTO(数据传输对象)和带有 Final 修饰符的 java 实现字段的问题。
事实上。所有 DTO 必须在一个地方(构造函数)创建,DTO 内部没有任何逻辑。如果有多个源 - 有聚合服务,它可以收集所有数据并将其放入新的 DTO 中。此外,具有最终字段的 DTO 将更加可预测。不是吗?
示例:
@Getter
class FooDto {
private final ... fooField;
}
问题是:我应该在 DTO 的字段上使用 Final 修饰符吗? 我没有找到关于 DTO 的确切信息。但在我看来 - 最终是这里的好点。
最佳答案
您的问题没有正确和错误的答案。尽管如此,使用提到的最终字段是很好的做法 here
如果您在返回语句之前无法进一步控制字段,那么您最好使用最终字段。您应该考虑“不可变对象(immutable对象)设计模式”作为一个很好的实践。
如果您在返回对象之前需要进行第二次检查,那么您可以删除 Final 修饰符并使用库进行映射并避免额外的代码。您可以使用Mapstruct
关于Java DTO 和最终字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61868045/