Spring 在 JavaFX 应用程序中 - 如何 属性 将控制器作为依赖项处理?

Spring in a JavaFX application - how to property handle controller as dependency?

我有一个使用 spring 引导的 JavaFX 应用程序,完全按照此博客 post:

中的描述

http://www.greggbolinger.com/let-spring-be-your-javafx-controller-factory/

我正在使用 FXML 加载程序覆盖控制器工厂以使用 spring。

问题是 Spring 在应用程序启动时加载标记为 @Component 的控制器 class 或稍后如果标记为 @Lazy,但将 bean 保留在内存中。

如果我打开一个舞台,修改数据,关闭舞台并再次打开,数据仍然存在(因为控制器被 spring 保留)。如果我打开两个相同的舞台 (window),它也会妨碍。它共享同一个控制器,所以如果我修改一个,另一个也会修改,这不是期望的行为。

如何使用 spring 正确处理 JavaFX 控制器?

谢谢!

将控制器标记为具有 prototype 作用域,以便在每次请求时创建一个新实例:

@Component
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
public class Controller {
    // ...
}