@catigurable Vaadin app控制器在tomcat重启后不重新注入

时间:2012-07-05 11:56:30

标签: spring vaadin

我正在使用@configurable注释的Vaadin控制器和我的Spring上下文,并且它工作正常 - 除非我需要重新启动Tomcat,并且会话被反序列化。然后我为我的Vaadin应用程序得到了这个:

尚未在BeanConfigurerSupport上设置

org.springframework.beans.factory.wiring.BeanConfigurerSupport BeanFactory:确保此configurer在Spring容器中运行。无法配置[web.vaadin.ui.BackOfficeApplication]类型的bean。无需注射即可进行。

我在想这可能是因为vaadin应用程序在春豆工厂有机会之前进行了重新编译?

(我正在使用CTW - aspectj和Spring 3.1.1.RELEASE)

注意:

在日志中似乎这些错误出现在“Root WebApplicationContext:initialization started”之前。如何在启动上下文初始化之前自动装配bean?

1 个答案:

答案 0 :(得分:0)

我不是使用Spring和Tomcat进行(反)序列化的专家,这不是一个答案,但可能是一种解决方法。

如果BackOfficeApplication是您的Vaadin应用程序,则可以选择在该类上使用@Configurable。相反,创建一个per-Vaadin Application Spring应用程序上下文XML文件并将其添加到其中以使您的BackOfficeApplication实例自动装配等等:

<bean id="backOfficeApplication"
  class="org.dellroad.stuff.vaadin.ContextApplication"
  factory-method="get"/>

一般来说,@Configurable可能比普通的bean布线更麻烦,因为它们需要在对象构造时进行配置,而不是允许bean工厂稍后进行布线,在那里它可能更好地检测循环,强制排序等。

理想情况下,正常的bean布线应该用于在应用程序开始时初始化一次的单例,@Configurable应该用于在正常操作期间随机创建的“动态”bean。