首頁  >  文章  >  Java  >  如何將 Spring 依賴項(如 JPA 儲存庫)注入到 JavaFX 生命週期方法中?

如何將 Spring 依賴項(如 JPA 儲存庫)注入到 JavaFX 生命週期方法中?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-31 09:40:29958瀏覽

How can I inject Spring dependencies (like JPA repositories) into JavaFX lifecycle methods?

為JavaFX 新增Spring 依賴注入:JPA 儲存庫與服務

問題

JavaFX 應用程式具有預先定義的生命週期掛鉤(init( )、start( ) 和stop()) 用於管理應用程式初始化和生命週期事件。但是,將 Spring 依賴項(例如 JPA 儲存庫)直接注入這些方法可能無法運作。這是因為 JavaFX 將其生命週期方法與 Spring 應用程式上下文隔離。

依賴注入選項

選項 1:使用 Spring Boot 應用程式

考慮將 JavaFX 應用程式轉換為 Spring Boot 應用程式。這提供了與 Spring 框架的完全集成,包括依賴注入、JPA 儲存庫和其他 Spring 設施。

選項 2:手動依賴注入

1。透過JavaFXMLLoader 整合

在FXMLLoader 上使用setControllerFactory 方法允許Spring 實例化FXML 控制器並註入Spring 依賴項:

<code class="java">fxmlLoader.setControllerFactory(springContext::getBean);</code>

使用@Compon 和 Springent 與您的註解JavaFX 控制器用於接收依賴項的註解:

<code class="java">@Component
@Scope("prototype")
public class DemoController {

    @FXML
    private Label usernameLabel;

    @Autowired
    public SpringService mySpringService;

    ...
}</code>

2.注入JavaFX 應用程式類別

如果要將Spring beans 注入JavaFX 應用程式類別:

<code class="java">springContext
    .getAutowireCapableBeanFactory()
    .autowireBeanProperties(
        this,
        AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE,
        true
    );</code>

關注點分離

保持關注點分離,建議將Spring Boot 應用程式與JavaFX 應用程式分開。執行 Spring Boot 應用程式以初始化 Spring 上下文並將其傳遞給 JavaFX 應用程式。

將命令列參數從 JavaFX 傳遞到 SpringBoot

使用 getParameters().getRaw().toArray( new String[0]) 方法將參數從 JavaFX 傳遞到 Spring Boot。

附加說明

  • @Controller 註解可用於 JavaFX 控制器,但建議使用 @用於更清晰地分離關注點的組件。
  • @Scope("prototype") 用於為每個 FXML 視圖物件建立新的控制器實例。
  • 有關更多詳細信息,請參閱提供的連結在答案框中。

以上是如何將 Spring 依賴項(如 JPA 儲存庫)注入到 JavaFX 生命週期方法中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn