gpt4 book ai didi

java - JAXB创建的Java类是否应该有逻辑代码

转载 作者:行者123 更新时间:2023-12-02 03:02:02 25 4
gpt4 key购买 nike

我使用 JAXB 将 XML 配置文件加载到 Java 对象 (ConfigurationDTO)。在此 Java 对象(ConfigurationDTO)上添加一些逻辑代码是个好习惯吗?或者我应该使用此逻辑代码(即配置)创建一个不同的 java 对象。当我说逻辑代码时,我指的是配置文件应该具有的一些检查/约束。 java 类“ConfigurationDTO”应该只包含 getter 吗?

最佳答案

问题是为什么需要这些限制?您是否不仅仅将对象用于编码/解码?如果是这样,那是个坏主意。经验法则是不要将 DTO 对象分布在应用程序的所有级别中。如果您遵循此规则,则无需在 DTO 中添加额外的约束。

JAXB 标准使您能够在编码和解码期间验证对象。这意味着如果您的 XML 模式需要非空字段,但相应的 java 对象具有 null 值,则 marshal 将失败。反之亦然。

这是来自 the JAXB documentation 的引用

Validation is the process of verifying that an XML document meets all the constraints expressed in the schema. JAXB 1.0 provided validation at unmarshal time and also enabled on-demand validation on a JAXB content tree. JAXB 2.0 only allows validation at unmarshal and marshal time. A web service processing model is to be lax in reading in data and strict on writing it out. To meet that model, validation was added to marshal time so users could confirm that they did not invalidate an XML document when modifying the document in JAXB form.

这种方法有其自身的缺点(如果您将 DTO 分散到应用程序中,您将失去对它的控制),但优点更有值(value)。

关于java - JAXB创建的Java类是否应该有逻辑代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42313928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com