我嘗試在我的專案中使用依賴注入,這樣我就可以在場景之間傳輸我的資料。例如,在一個控制器中,我得到了一個Integer名為proj_id的欄位。我在舞臺上的一些邏輯得到了這個。當我改變我的階段時,我想通過新的階段控制器訪問這個變數。新控制器具有相同的欄位Integer proj_id。
我將它們標記為欄位,@Autowired但我不明白當控制器更改時如何合適Bean地存盤值。我用建構式、getter 和 setter 創建了物體Curr_proj,我認為它是一個Component存盤變數,但仍然不起作用。
uj5u.com熱心網友回復:
這不是一個具體的答案,只是一個一般的、不集中的答案,可能有助于提供一個總體方向。也許我最終會將資訊轉移到其他地方。如果它對您沒有用,請忽略此答案。
我的建議:學習春天。
Baeldung、spring.io 和其他網站有大量資源專門用于教授 spring。利用它們。
遵循使用 Spring Boot 應用程式的現代實踐。忽略任何不使用最新 Spring 版本或依賴 xml 配置的舊教程。
另外:學習JavaFX
Oracle、eden coding、makery 和 openjfx.io 都有很好的學習 JavaFX 的教程。
獨立做這兩件事。然后在這兩種技術中獨立開發您自己的重要應用程式。
在您嘗試集成 JavaFX 和 Spring 之前就這樣做。JavaFX 和 Spring 的交集,優質資源少得多,這意味著你需要更多的研究、更多的作業和更多的開發才能完成集成。
只有在您對兩種技術都有很好的作業知識(不僅僅是基本了解)之后,才能嘗試開發另一個使用這兩種技術的應用程式。
與其他 Spring 技術不同,目前您不能只使用 Spring Initializr 生成的應用程式遵循一些股票教程,并期望擁有一個集成 Spring 和 JavaFX 的有用的作業應用程式。
IMO,集成并不太難,對于許多應用程式來說都是值得的,但我不建議在沒有兩種技術(Spring 和 JavaFX)全面經驗的情況下構建集成應用程式,因為它們是如此不同,即使它們是互補的。
為了更具體地解決您的問題:遵循javafx mvc中的架構,但在模型層中使用 spring 服務和 bean 并將它們注入您的控制器。
如果您通過 rest 與服務器通信,請使用 spring rest 客戶端和資料傳輸物件。
如果您有本地資料庫,請使用彈簧資料。
物體類或資料傳輸物件可以構成 mvc 中模型的一部分,或者您可以為 mvvm 架構創建具有 JavaFX 屬性的單獨視圖模型類。
對于與 jpa 基本集成的本地資料庫應用程式,請參閱:
- 在 JavaFX (JPA Repo, Service) 中添加 Spring 依賴注入
整體架構類似于這個伊甸園 SQLite JavaFX 應用程式,即使那不是 spring。它演示了所涉及的組件。替代彈簧技術,例如彈簧資料、注入、彈簧啟動應用程式等,用于各種組件和接線。
綜上所述,控制器中資料之間的相互通信被抽象為通過依賴注入使用 Spring 服務和 bean 的 MVC 或 MVVM 架構。整個應用程式不僅僅是 MVC,還具有其他組件和技術,例如:
春季啟動管理:
- Spring應用生命周期
- 彈簧組件配置
- 讀取應用程式屬性組態檔
JavaFX 應用程式類管理的 JavaFX 應用程式生命周期
fxml 控制器中的 UI 視圖
并且要么
spring data for local db
OR
spring rest to access web services on remote systems.
When auto wiring controllers, use prototype scope for the controller bean. For more info see:
- Does using Spring boot with javafx will consume a lot of memory?
Currently JavaFX 17 is modular but spring boot 2 is not. This makes integration more difficult.
For many developers the integration of JavaFX and Spring will currently be beyond their comfort zone as developers.
Future possibilities
In the future spring boot 3 will be modular.
Hopefully, also a starter dependency can be added to Spring Initializr to make it easy to generate a new JavaFX spring project.
Then combine this with good modular and plugin build support in Maven and gradle for packaging modular apps through jlink and jpackage.
還添加了良好的 IDE 新專案向導支持,以使用這兩個框架生成新專案。
還為使用新技術的 Spring 和 JavaFX 集成提供了很好的教程。
以上所有內容的結合有望使技術的集成和部署更容易獲得。
uj5u.com熱心網友回復:
好的,我真的很感謝你的回答,但我的 JavaFX 知識并不像你想象的那么糟糕。我同意,我必須更加努力,我現在確實在學習 Spring。
我做了一個小研究,在我的情況下,在場景之間傳輸變數非常容易,因為我使用FXVeawer的控制器已經是Spring Components.
因此,在我的欄位中,我FirstController只需要添加一個:getterproj_ij
public Integer proj_id;
public void SomeMethod() {
proj_id = 5;
}
Integer getProj_id() {
return proj_id;
}
完成后,我只是在我的SecondController public FitstController FirstController簡單建構式中創建了一個欄位來解決問題injcection:
@Autowired
public void get_projid(FirstController FirstController) {
this.FirstController = FirstController;
}
現在,我可以proj_id通過輸入FirstController.getProj_idmy來訪問我的值Second Controller
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/438149.html
