我在一个PartStack中有几个部分。应用程序启动时,只调用第一部分的构造函数。当我点击这些部件时会调用其他构造函数。
我有这样的事情:
public class OneOfParts {
@Inject OneOfParts(final BorderPane pane) {
//some initialization stuff
}
//other methods
}
如何在应用程序启动时调用此PartStack中所有部件的构造函数?
E:或者还有另一种方法可以在应用程序启动时从零件初始化最终字段吗?
答案 0 :(得分:0)
您可以尝试在应用程序启动期间使用LifeCycleHandler进行初始化。 Lars Vogel描述了如何实现一个here。
或者你可以编写一个数据类并使用@Creatable和@Singleton注释它,然后你可以在所有通过DI共享数据的部分中使用它。
@Singleton
@Creatable
public class SharedData() {
private SharedData() {
// initialize Data here - alternatively: Use @PostConstruct method in this class
}
}
public class PartShowingHex {
@PostConstruct
private void initializePart(SharedData pData) {
// do whatever you need
}
}
对于基于现场的方法:
public class PartShowingTxt {
@Inject
private SharedData myData;
@PostConstruct
private void initializePart() {
// ...
}
}
我建议使用Data-Singleton和method-DI方法(第一个代码示例)。