我對我的新作品中的序列化字段,序列化對象中的對象感到困惑。
什麼應該被序列化或什麼應該被標記爲序列化的瞬態?Java:什麼時候序列化非序列化對象或將它們設置爲瞬態?
下面是一個例子:
@Stateless
public class NonSerializedThingStateless{
...
}
@RequestScoped
public class NonSerializedThingRequestScoped{
...
}
@Named
@SessionScoped
public class SerializedBean implements Serializable{
@Inject
private NonSerializedThingRequestScoped nstrs;
@Inject
private NonSerializedThingStateless nsts;
private List<Something> list; //or something else like POJO
...
}
是否有一個良好的,簡單的方法,我可以告訴我應該序列化注入或使用的類或指導?
這是真的嗎?我必須在序列化和將事物設置爲瞬態之間進行選擇,還是有其他方法?
@Inject幾乎可以在任何地方使用,單體在這個項目中很少見。那麼你對於請求作用域對象有什麼建議?現在一切正常,但我想提高程序的穩定性。我有一種感覺,我必須在序列化之間進行選擇,或者將它們設置爲暫時的,是否正確,還是我有更多的選擇? (我會改進這個問題) – CsBalazsHungary
如果修改項目「修復」@Inject的用法需要幾周的時間,那可能已經太晚了。我的建議是針對新的項目,或者意識到某些使用「@Inject」的人是一個常見的問題來源。如果你不能或不需要改變它,那很好:-) –
選項:'nstrs'必須是'transient'。也就是說,序列化是一個非常複雜的話題。獲取一個允許你模擬應用程序容器的框架。 Spring 3.2對模擬HTTP對象和編寫測試用例有很好的支持。然後編寫測試以確保序列化實際上符合您的期望。否則,它將成爲一個不斷的錯誤來源。 –