2010-12-18 112 views
1

我從外部來源獲取xsd,而我無法控制它。現在我們想要將自定義方法添加到JAXB生成的類中,以便該對象可以更多地瞭解自己,而不是使用getter和setter作爲簡單的POJO。如何將自定義行爲添加到JAXB生成的類。自定義不覆蓋現有的方法

的想法是像我們一旦實現這種類型的方法,我們不需要深入脫水對象,但卻要求我們通過調用自定義方法需要並能得到我們想要的特定信息的對象?

當然有傳統的編程方法,即在我繼續向下鑽取兒兒根對象的孩子,要求每個孩子getter方法和實現業務邏輯。但不知何故,這裏的球隊並不希望如此。

一種方法是迄今爲止我所做的是蠻力之一。就像我使用JAXB從XSD生成類一樣。那麼我有一個外部實用程序(現在這是一個獨立的java程序),它在運行時會讀取一些文本文件(以我們自己的方式來結構化,找出哪個方法應該去哪個.java文件)在一個特定的目錄其中包含自定義方法,並將這些方法移至適當的JAXB生成的類。每當我得到一個新版本的XSD時,我需要生成類,調用此實用程序,並可能解決一些編譯問題等,以防JAXB生成的類發生一些變化。該實用程序工作得很好。但我想知道這一點。

有沒有什麼更好的方法來做到這一點?我查了互聯網。有一些解決方案給出,但這些只是覆蓋JAXB生成的對象中的現有get方法,而不是添加全新的方法。

請建議。

回答

1

那麼,「最乾淨辦法」將使用面向方面編程(AOP),它做了你描述不是對源代碼的水平,但在運行時。它將方法注入類中。 AOP的一種可能的實現方式是AspectJ

如果XML shema不太複雜,則可能實現的第二種方法是創建一個包裝。

您已經描述的第三種選擇。但我可以依賴標準工具而不是自己編碼 - 我建議使用標準差異/補丁工具。只要你的代碼風格是固定的,從現有的修改後的java文件中創建一個diff並將其應用到新鮮生成的JAXB代碼上並不複雜。

相關問題