2017-02-18 41 views
0

我使用JAXB將XML配置文件加載到Java對象(ConfigurationDTO)。在這個Java對象(ConfigurationDTO)上添加一些邏輯代碼是好習慣,還是我應該用這個邏輯代碼(即配置)創建一個不同的java對象。當我說邏輯代碼時,我指的是配置文件應該有的一些檢查/約束。 java類'ConfigurationDTO'是否只包含getter?應由JAXB創建的Java類具有邏輯代碼

回答

2

問題是爲什麼你需要這個約束?你打算不僅將你的對象用於編組/解組?如果是這樣,這是個壞主意。經驗法則不是在應用程序的所有級別中傳播DTO對象。如果你遵循這個規則,你不需要在你的DTO中有額外的限制。

JAXB標準爲您提供了在編組和解組時間期間驗證對象的能力。這意味着如果您的XML模式需要非空字段,但相應的java對象具有空值,則編組將失敗。反之亦然。

這裏是the JAXB documentation

報價Validation是驗證XML文檔符合該模式所表達的所有約束的過程。 JAXB 1.0在解組時提供了驗證,並且還在JAXB內容樹上啓用了按需驗證。 JAXB 2.0只允許在解組和編組時進行驗證。一個Web服務處理模型在讀取數據方面不嚴格,並嚴格寫出數據。爲了滿足該模型,驗證被添加到編組時間,以便用戶在JAXB表單中修改文檔時可以確認它們沒有使XML文檔無效。

這種方法有它自己的缺點(如果你將DTO擴展到應用程序中,你將失去控制),但優點更有價值。