JAXB创建的Java类是否具有逻辑代码

时间:2017-02-18 10:27:59

标签: java xml jaxb

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

1 个答案:

答案 0 :(得分:2)

问题是为什么你需要这些限制?您是否打算将您的对象用于编组/解组?如果是这样,这是个坏主意。经验法则不是在应用程序的所有级别之间传播DTO对象。如果您遵循此规则,则不需要在DTO中设置其他约束。

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

以下是the JAXB documentation

的引用
  

验证是验证XML文档是否满足架构中表达的所有约束的过程。 JAXB 1.0在unmarshal时提供了验证,并且还在JAXB内容树上启用了按需验证。 JAXB 2.0仅允许在unmarshal和marshal时进行验证。 Web服务处理模型在读取数据时要松懈,严格要写出来。为了满足该模型,在编组时添加了验证,以便用户在JAXB表单中修改文档时可以确认它们没有使XML文档无效。

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