또 다른 제안 : XMLEncoder
을 사용하고 비 bean 스타일 객체에 대해 필요한 PersistenceDelegate
클래스를 작성하십시오. 예 :
static class FilePersistenceDelegate extends PersistenceDelegate {
protected Expression instantiate(Object oldInstance, Encoder out) {
File file = (File)oldInstance;
return new Expression(oldInstance, oldInstance.getClass(), "new", new Object[]{ file.getPath() });
}
}
같은 것을 할 것 실제 인코딩을 수행 할 수있는 내 코드 : 나는 제 3의 라이브러리에 대한 종속성을 생성하지 않으려는 경우
XMLEncoder encoder = new XMLEncoder(new BufferedOutputStream(new GZIPOutputStream(new FileOutputStream(file))));
for (Map.Entry<Class<?>, PersistenceDelegate> entry : MY_DELEGATES.entrySet()) {
// Add any custom persistence delegates written.
encoder.setPersistenceDelegate(entry.getKey(), entry.getValue());
}
encoder.writeObject(object);
encoder.close();
if (encoder.getException() != null) {
// Encoding failed.
}
나는 일반적으로 경량 응용 프로그램에 대해서도이 방법을 사용할 것 내 도메인 모델은 비교적 간단합니다.
+1 – kdgregory