Как правильно использовать Spring с JavaFx
Есть много тем с похожей проблемой, но я не понимаю, что делаю неправильно.
Я хочу создать небольшое приложение с JavaFx. Поэтому у меня есть контроллер-класс, в который я хочу внедрить сервис. Служба отвечает за синтаксический анализ файла XML и возврат пригодной для использования структуры данных.
Так что это мой код прямо сейчас:
Класс AppConfig:
@Configuration
@ComponentScan("de.freddy.services")
@PropertySource("classpath:de/freddy/application.properties")
public class AppConfig {
public AdressbuchService adressbuchService() {
AdressbuchService aService = new AdressbuchService();
return aService;
}
}
Main-приложения:
public class MeyerNewsletter extends Application {
private Stage primaryStage;
private Parent rootLayout;
private ApplicationContext appContext;
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage){
appContext = new AnnotationConfigApplicationContext(AppConfig.class);
this.primaryStage = primaryStage;
this.primaryStage.setTitle("Newsletterverwaltung");
System.out.println(appContext.getEnvironment().getProperty("application.name") + " wurde gestartet.");
initRootLayout();
}
private void initRootLayout() {
try {
rootLayout = FXMLLoader.load(getClass().getResource("/de.freddy/fxml/RootView.fxml"));
primaryStage.setTitle("Newsletterverwaltung");
primaryStage.setScene(new Scene(rootLayout));
primaryStage.show();
} catch (Exception e) {
e.printStackTrace();
}
}
}
И, наконец, RootController, где будет использоваться сервис:
public class RootController {
@Autowired
private AdressbuchService adressbuchService;
@FXML
public void ladeAdressbuch() {
AdressListe liste = adressbuchService.liesAlleAdressen();
for (Adresse a : liste.getAdressListe()) {
System.out.println(a);
}
}
@FXML
public void speichereAdressbuch() {
System.out.println("test2 - speichere");
}
}
В тот момент, когда я вызываю функцию "ladeAdressbuch()", в строке появляется исключение нулевого указателя, где я использую объект adressbuchService в Rootcontroller.
Итак, что я делаю не так?
Спасибо за помощь!