Java:何时序列化未序列化的对象或将其置于瞬态?
在我的新工作中,非序列化字段和序列化对象中的对象让我感到困惑。Java:何时序列化未序列化的对象或将其置于瞬态?,java,serialization,Java,Serialization,在我的新工作中,非序列化字段和序列化对象中的对象让我感到困惑。 什么应该序列化,或者什么应该标记为暂时序列化 以下是一个例子: @Stateless public class NonSerializedThingStateless{ ... } @RequestScoped public class NonSerializedThingRequestScoped{ ... } @Named @SessionScoped public class SerializedBean impleme
什么应该序列化,或者什么应该标记为暂时序列化 以下是一个例子:
@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
...
}
@无状态
公共类非序列化thingstateless{
...
}
@请求范围
公共类非序列化ThingRequestScope{
...
}
@命名
@会议范围
公共类SerializedBean实现了Serializable{
@注入
私有非串行化任务范围NSTR;
@注入
私有非串行化的非国有NST;
private List;//或类似于POJO的其他内容
...
}
有没有一种简单的好方法可以告诉我什么时候应该序列化注入的或使用过的类或指南
我真的必须在序列化和将事物置于瞬态之间做出选择吗?还是有其他方法?首先,警告一句:您可能只想在简单的情况下使用
@Inject
(通常是单例)。除此之外,自动布线也可以工作,但很快就会变得混乱
这就是说,transient
的规则很简单:当您读取对象(反序列化)时,您是否仍然拥有重建原始状态所需的所有内容
如果一个对象依赖于当前请求,那么答案可能是否定的:当从流中读取bean时,请求将消失很久。首先,一句警告:您可能只想在简单的情况下(通常是单例)使用
@Inject
。除此之外,自动布线也可以工作,但很快就会变得混乱
这就是说,transient
的规则很简单:当您读取对象(反序列化)时,您是否仍然拥有重建原始状态所需的所有内容
如果一个对象依赖于当前请求,那么答案可能是否定的:当从流中读取bean时,请求将消失很久。首先,一句警告:您可能只想在简单的情况下(通常是单例)使用
@Inject
。除此之外,自动布线也可以工作,但很快就会变得混乱
这就是说,transient
的规则很简单:当您读取对象(反序列化)时,您是否仍然拥有重建原始状态所需的所有内容
如果一个对象依赖于当前请求,那么答案可能是否定的:当从流中读取bean时,请求将消失很久。首先,一句警告:您可能只想在简单的情况下(通常是单例)使用
@Inject
。除此之外,自动布线也可以工作,但很快就会变得混乱
这就是说,transient
的规则很简单:当您读取对象(反序列化)时,您是否仍然拥有重建原始状态所需的所有内容
如果一个对象依赖于当前请求,那么答案可能是否定的:当从流中读取bean时,请求将消失很久。在web应用程序中,会话范围的变量通常会声明为
实现可序列化的
。这有几个常见的原因:
字节[]
,并写入文件系统如果你肯定要连续化会话;然后是的,您必须选择什么应该序列化,什么应该是暂时的但是,如果您不是在群集环境中运行,则不会在关机时将会话保存到磁盘,并且没有其他问题;那么,完全有理由不让任何东西
可序列化
,因为不会发生序列化 在web应用程序中,会话范围的变量通常会