1
我想代碼域對象,可以從其他對象實現相同的接口創建自己。我也編碼它,以便他們可以將自己轉換爲其他實現,基本上簡單的域轉移對象。我使用jackson在實現之間自動轉換,以減少容易出錯的鍋爐板手動對象轉換。傑克遜,繼承,域對象和泛型
它可能更容易用一個例子來說明:
//base class
public abstract class DO<T extends Object> {
public abstract T toDTO();
public abstract DO<T> fromDTO(T t);
}
//concrete implementation
public class MyDO extends DO<MyDOInterface> implements MyDOInterface {
public MyDO fromDTO(MyDTO r){
ObjectMapper mapper = new ObjectMapper();
return mapper.convertValue(r, MyDO.class);
}
public MyDTO toDTO() {
ObjectMapper mapper = new ObjectMapper();
return mapper.convertValue(this, MyDO.class);
}
//getters and setters from MyDOInterface
}
現在創造的DTO時能正常工作,但它是一個有點疼痛的其他方式。要創建我的域對象,我必須這樣做:
MyDO myDO = new MyDO().fromDTO(aDTOInstance);
它創建一個空對象以便從其上調用DTO(...)。
我有一種感覺,我錯過了簡單的東西,要麼讓我在構造函數或靜態方法中通過DTO來避免這種情況。或者甚至是DO本身的工廠方法,但我無法弄清楚它是什麼。任何人都可以看到使這項工作的方式?
乾杯。我確實需要更多關注@JsonCreator的工作原理。我已經到了與我的特定域對象(mongodb DBObjects)配合良好的地步,但我無法獲得一個通用的解決方案。 – tom