У меня проблема.
Это мое основное:
@SpringBootApplication
public class MyAppSpringApplication extends Application {
public static ConfigurableApplicationContext springContext;
private FXMLLoader fxmlLoader;
public static void main(String[] args) {
Application.launch(args);
}
@Override
public void start(Stage stage) throws Exception {
fxmlLoader.setLocation(getClass().getResource("/sample.fxml"));
Parent root = fxmlLoader.load();
stage.setTitle("Sample app");
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
@Override
public void stop() throws Exception {
springContext.stop();
}
@Override
public void init() throws Exception {
springContext = SpringApplication.run(MyAppSpringApplication.class);
fxmlLoader = new FXMLLoader();
fxmlLoader.setControllerFactory(springContext::getBean);
}
}
И мое первое окно (sample.fxml) с samplecontroller и sampleservice работает нормально. Но я создаю еще один disk-builder.fxml с их контроллером и сервисом, но когда я пытаюсь использовать там свой сервис, он не работает из-за нуля в сервисе diskbuilderservice (также не работает sampleservice в этом новом контроллере). Я слышал, что мне тоже стоит это использовать:
public static ConfigurableApplicationContext springContext;
но я понятия не имею, как мне его использовать. Извините за мои слабые знания английского языка.
@Controller
public class DishBuilderController implements Initializable {
@Autowired
DishBuilderService dishBuilderService;
@Autowired
SampleService sampleService;
private void somefun(){
sampleService.somefunInService(); //here sampleService and
every other service has null.
}
Вот момент, когда я открываю новое окно PlateBuilder (оно находится в SampleController):
@FXML
void addNoweOknoClicked(ActionEvent event) {
try {
Stage stage = (Stage)anchorPane.getScene().getWindow();
FXMLLoader fxmlLoader = new FXMLLoader();
fxmlLoader.setLocation(getClass().getResource("/dish-builder.fxml"));
AnchorPane root = fxmlLoader.load();
stage.setTitle("Sample app");
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}catch (IOException e){
e.printStackTrace();
}
}
Подробнее здесь: https://stackoverflow.com/questions/725 ... n-1-window