有關建立 Java 專案的系列文章中的一篇文章(其他資料的連結位於最後)。其目標是分析關鍵技術,結果是編寫一個電報機器人。在這一部分中,我們嘗試啟動SpringBoot和Flyway。 最少的理論量,隨你喜歡)))我們無限期地省略了 Flyway/Liquibase 的最終比較,然後進入正題。即便如此,它已經拖延了。為了不重複描述 Flyway,我決定立即將其添加到我們未來的 JRTB 專案中。
多方面的、多模組的:
作為其中的一部分,我們需要做什麼?
- 啟動基於 Maven 的 SpringBoot 應用程式。
- 在那裡添加 Flyway:幸運的是,它們很容易整合。
- 為範例資料庫中的表格新增架構。
什麼是飛行路線
要使用某個東西,您首先需要弄清楚它是什麼以及為什麼。 Flyway是一個資料庫版本控制工具。話雖耳熟能詳,但不知何故還沒有加上理解,對吧?讓我們試著描述一下 Flyway 解決的問題。假設我們有一個項目。就像我們世界上的一切一樣,它並不完美,因此不可能規劃和製定該專案的最終版本。每次都會出現某些未解釋的細微差別。該項目在其工作中使用資料庫。當然,如果專案發生變化,資料庫結構也可能發生變化。假設我們為專案中的一個實體新增一個欄位。怎麼做?- 將此欄位新增至我們的實體中,更新所有內容以使業務邏輯正常運作。
- 更新資料庫。唯一可能的方法是手動完成。為此,您需要進去註冊必要的sql腳本。
- 但是,如果我們有多個地方部署項目,那麼是否需要在每個地方都進行此操作?
- 如果我們想回去,我們如何準確地知道資料庫結構現在處於什麼狀態?
- 我們如何確保資料庫更改成功?
- 我怎樣才能有機會追蹤專案中發生的所有資料庫變更?
啟動 SpringBoot + Flyway
什麼是 Spring Boot
我們要推出什麼?...要了解我們在做什麼以及為什麼要做,您需要確定 SpringBoot 是什麼。首先,讓我們快速(好吧,非常快地)談談Spring。目前,它是用 Java 開發伺服器應用程式的事實上的行業標準。標準是什麼?我該如何向你解釋這一點?Spring 是應用程式的骨架,然後我們將「內容」(我們的業務邏輯)放到它上面。借助Spring(下文我將使用這張描圖紙,以免浪費時間切換語言:D))Spring為我們提供了一個開始,我們從這裡開始做所有的事情。它是- 您想使用資料庫嗎?你想要關係嗎?你想要非關係型嗎?我們在這裡使用 Spring Data。
- 您想使用 http 請求嗎?給你,Spring Web(Spring MVC)。
- 您是否需要一個容器將所有物品放在一個地方?這就是 Spring 核心。
- 您是否需要在專案上設定安全性以便有不同的角色和命令鏈?春季安全。
- 正當你以為擁有這樣的東西該有多好時,事實證明 Spring 已經具備了你所需要的東西,而且它集成起來又快又容易。
啟動 SpringBoot
既然我們已經了解了 Maven 是什麼,那麼讓我們根據需要建立一個新專案。為此,您只需訪問專門為此創建的網站即可。它稱為Spring Initializr。在這裡您需要填寫並選擇您需要的內容:- 專案建置工具是gradle或maven。正如您所看到的,Ant 甚至不再被提及。這是關於哪些建置工具值得您花時間的一個很好的提示。
- 你可以使用的語言是java、kotlin、groovy。這裡一切都很簡單:它們都是類似 JVM 且易於運行的 Java 程式碼。順便說一下,Kotlin 值得一看。坦白說,Groovy 已經變得無趣了(曾經有一段時間他們轉向groovy,但很快就過去了)。
- Spring版本...這裡要了解Spring主體部分及其模組的版本是一致的。
- 項目數據。我已經描述過這些事情。
- 我們選擇要收集的檔案 - Jar 或 War。
- 嗯,我們最喜歡的 Java 版本。最近出現了很多這樣的版本……他們等了很多年,現在一年有兩個。
- Maven - 我們之前與您討論過這一點並非毫無意義。
- Java 是我們的寵兒 :D
- 我們以 2.2.11 版本為例。為什麼不是最新的呢?因為越新,出現 bug 的可能性就越大。對我們來說,哪個版本並不重要,但舊版本會更可靠。因此,我們選擇2.2.11。
- 群組:com.github.javarushcommunity
- 神器:springboot-flyway-demo
- 名稱:SpringBoot + Flyway 演示
- 描述:專案示範了 SpringBoot 和 Flyway 之間的整合。(是的,編寫文件的能力是開發的重要組成部分:))
- 套件名稱:com.github.javarushcommunity.springbootflywaydemo。在這裡,他們將立即為我們創建一個基本包,其中包含一個將啟動我們的應用程式的類別。
- 包裝:罐裝
- Java:8。我們不要走在機車前面,走好老八。為什麼不是11?做什麼的?對於我們的例子,我不明白這一點。
spring.datasource.url=jdbc:mysql://localhost:3306/flyway_demo_db
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
我們再次運行 main 方法並得到:現在我們需要添加至少一個遷移。要正確編寫遷移,您需要採用以下模板:V<VERSION>__<NAME>.sql使用此模板,我們將在對應的資料夾中 建立名為V00001__Create_country_table.sql 的遷移檔案: /src/main/resources/資料庫.遷移/ . 讓我們在其中建立一個國家/地區表。讓我們採用第二篇有關資料庫的文章中的腳本。在開始之前,我們先進去建立一個工作資料庫:flyway_demo_db。讓我們透過 MysqlWorkbench 來完成此操作:現在我們可以再次執行 main 方法:一切正常,但由於專案中還沒有任何內容,因此它完成了工作。然而,從日誌中可以清楚看出(閱讀日誌是什麼):
- 成功連接資料庫。
- 遷移已經過驗證,一切正常。
- Flyway 建立了一個表格來管理遷移。
- 00001 號移民開始了-國家的創建成功了。
GO TO FULL VERSION