标签: java-ee cdi
假设我们有一个@SessionScoped bean,它有一个属性,正在注入@Inject。构建bean时,这种注入是成功的。现在,由于会话一段时间没有使用,bean被序列化到磁盘并从内存中删除。一段时间后,会话再次被使用,bean从磁盘反序列化并重新实例化。该属性的类型是一个非可序列化的类。
@SessionScoped
@Inject
注入的属性会发生什么? 他们保持空吗? 他们会再次注射吗?
我找不到有关此用例的任何具体信息。
答案 0 :(得分:1)
实际注入的不是属性本身,而是属性的动态代理。这意味着当您的@SessionScoped bean被反序列化并再次使用时,该属性将再次得到解决。有关详细信息,请参阅this post。这是Weld的具体内容,但可以让您了解会发生什么。然而,规范要求它(参见spec的第5.4节),所以其他实现也会这样做。