注意:除非您非常熟悉 Java、Spring AOP 和 Tomcat,否则这没有任何意义。
问题是标记为@Configurable 的bean 在被Tomcat SESSIONS.ser 反序列化时不会被注入。
我在带有 Spring 2.5.4、spring-tomcat-weaver-2.5.4、Tomcat 6.0.14 的基于 Struts 1.2.9 的(旧版)应用程序上注意到了这种行为。
代码:
public class MyForm implements Serializable {
private Foo myFoo; // getters and setters
}
public class Foo imlements Serializable {
private Bar myBar; // getters setters
}
@Configurable("barTemplate")
public class Bar implements Serializable {
@Autowired(required=true)
private transient SessionFactory hello;
// other transient dependencies ...
}
XML 将 Bar 配置为原型 bean。
应用了正确的 context:spring-configured 和 context:load-time-weaver 设置等(因为它适用于 Tomcat 的冷启动)。
第一次启动时一切正常。但是,重新启动 Tomcat 会导致写入 SESSIONS.ser 并在重新启动时反序列化 MyForm,它会这样做。但是,没有设置 Bar 中的任何依赖项!
但是如果我关闭 Tomcat,删除 SESSIONS.ser 文件,然后重新启动,那么一切都会正常工作。
诡异的。
非常感谢任何建议。