2014-01-20 50 views
0

假设我们有一个@SessionScoped bean,它有一个属性被注入@Inject。这个注入在构建bean时是成功的。现在,由于会话一段时间没有使用,bean将被序列化为磁盘并从内存中删除。一段时间后会话再次使用,该bean从磁盘反序列化并重新实例化。该属性的类型是一个不可序列化的类。会话bean钝化后注入会发生什么?

与注入的性质会发生什么? 他们保持空? 他们是否再次注射?

我找不到关于此用例的任何特定信息。

回答

1

真正注入的不是属性本身,而是它的动态代理。这意味着当您的@SessionScoped bean被反序列化并再次使用时,该属性会再次被解析。有关更多详细信息,请参阅this post。这是Weld特有的,但是会给你一个关于发生什么的好主意。然而,它是由规范规定的(请参阅spec的第5.4节),所以其他实现也会这样做。