JavaFX-Anwendungen haben vordefinierte Lebenszyklus-Hooks (init(), start( ) und stop()) zum Verwalten von Anwendungsinitialisierungs- und Lebenszyklusereignissen. Das direkte Einfügen von Spring-Abhängigkeiten (z. B. JPA-Repositorys) in diese Methoden funktioniert jedoch möglicherweise nicht. Dies liegt daran, dass JavaFX seine Lebenszyklusmethoden vom Spring-Anwendungskontext isoliert.
Option 1: Verwenden Sie eine Spring Boot-Anwendung
Überlegen Sie Konvertieren Ihrer JavaFX-Anwendung in eine Spring Boot-Anwendung. Dies ermöglicht eine vollständige Integration mit dem Spring-Framework, einschließlich Abhängigkeitsinjektion, JPA-Repositorys und anderen Spring-Funktionen.
Option 2: Manuelle Abhängigkeitsinjektion
1. Integration über JavaFXMLLoader
Verwenden Sie die setControllerFactory-Methode auf FXMLLoader, damit Spring FXML-Controller instanziieren und Spring-Abhängigkeiten einfügen kann:
<code class="java">fxmlLoader.setControllerFactory(springContext::getBean);</code>
Annotieren Sie Ihre JavaFX-Controller mit @Component und @Autowired Spring Anmerkungen zum Empfangen von Abhängigkeiten:
<code class="java">@Component @Scope("prototype") public class DemoController { @FXML private Label usernameLabel; @Autowired public SpringService mySpringService; ... }</code>
2. Injizieren in die JavaFX-Anwendungsklasse
Wenn Sie Spring Beans in die JavaFX-Anwendungsklasse injizieren möchten:
<code class="java">springContext .getAutowireCapableBeanFactory() .autowireBeanProperties( this, AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE, true );</code>
Um die Trennung von Belangen aufrechtzuerhalten , wird empfohlen, die Spring Boot-Anwendung von der JavaFX-Anwendung zu trennen. Führen Sie die Spring Boot-Anwendung aus, um den Spring-Kontext zu initialisieren und an die JavaFX-Anwendung zu übergeben.
Verwenden Sie getParameters().getRaw().toArray( neue String[0])-Methode zum Übergeben von Argumenten von JavaFX an Spring Boot.
Das obige ist der detaillierte Inhalt vonWie kann ich Spring-Abhängigkeiten (wie JPA-Repositorys) in JavaFX-Lebenszyklusmethoden einfügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!