注:Java、Spring AOP、Tomcatに精通していない限り、これは意味がありません。
問題は、Tomcat SESSIONS.serによって逆シリアル化されたときに、@ConfigurableとマークされたBeanが注入されないことです。
Spring 2.5.4、spring-tomcat-weaver-2.5.4、Tomcat6.0.14を使用するStruts1.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ファイルを削除して再起動すると、すべてが機能します。
変。
どんなアドバイスも大歓迎です。