我有一个使用spring boot的JavaFX应用程序,完全如本博文中所述:
http://www.greggbolinger.com/let-spring-be-your-javafx-controller-factory/
我正在使用FXML加载程序覆盖控制器工厂以使用spring。
问题是Spring在应用程序启动时加载标记为@Component的控制器类,如果标记为@Lazy,则加载,但将bean保留在内存中。
如果我打开一个舞台,修改数据,关闭舞台并再次打开它,数据仍然存在(因为控制器是由春天保存的)。如果我打开两个相同的舞台(窗口),它也会妨碍它。它共享相同的控制器,所以如果我修改一个,另一个修改,这不是理想的行为。
如何使用spring正确处理JavaFX控制器?
谢谢!
答案 0 :(得分:3)
将控制器标记为具有 prototype 范围,以便在每个请求上创建新实例:
@Component
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
public class Controller {
// ...
}