0

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

org.springframework.beans.factory.wiring.BeanConfigurerSupport BeanFactory 尚未在 BeanConfigurerSupport 上设置:确保此配置器在 Spring 容器中运行。无法配置 [web.vaadin.ui.BackOfficeApplication] 类型的 bean。继续不注射。

我在想这可能是因为 vaadin 应用程序在 spring bean 工厂有机会之前重新序列化?

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

笔记:

在日志中似乎这些错误出现在“Root WebApplicationContext:初始化开始”之前。在上下文初始化开始之前,bean 怎么会被自动装配?

4

1 回答 1

0

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

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

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

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

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

于 2012-07-08T21:33:21.617 回答