阿里P7淺析如何使用Spring Boot + Kotlin實現微服務

阿里P7淺析如何使用Spring Boot + Kotlin實現微服務

隨著Kotlin語言的普及,它更常用於Spring Boot來構建後端服務。從版本5開始,Spring Framework引入了對Kotlin的一流支持。在本文中,我將向您展示使用Kotlin和Spring Boot 2進行微服務構建的示例。我將描述Spring Boot的一些有趣功能,在構建基於REST的後端微服務時,可以將其視為一組良好實踐。

1.配置和依賴

要在Maven項目使用Kotlin你必須包括插件kotlin-maven-plugin,並且/src/main/kotlin,/src/test/kotlin目錄生成配置。我們還將-Xjsr305編譯器標誌設置為strict。此選項負責檢查對JSR-305註釋的支持(例如@NotNull註釋)。

阿里P7淺析如何使用Spring Boot + Kotlin實現微服務

我們還應該包括一些像kotlin-stdlib-jdk8和的核心Kotlin庫kotlin-reflect。默認情況下,我們可以在start.spring.io上配置Kotlin項目,生成pom.xml。對於基於REST的應用程序,您還需要用於JSON序列化/反序列化的Jackson庫。當然,我們必須包括用於Web應用程序的Spring啟動器以及負責提供管理端點的Actuator。

阿里P7淺析如何使用Spring Boot + Kotlin實現微服務

我們使用最新的穩定版Spring Boot和Kotlin 1.2.71

阿里P7淺析如何使用Spring Boot + Kotlin實現微服務

2.架構應用

讓我們從基礎開始。如果您熟悉Spring Boot和Java,最大的區別在於主類聲明。您將runApplication在Spring Boot應用程序類之外調用方法。主要類與Java中的相同,使用註釋@SpringBootApplication。

阿里P7淺析如何使用Spring Boot + Kotlin實現微服務

我們的示例應用程序非常簡單。它公開了一些REST端點,為模型對象提供CRUD操作。即使在這個代碼控制器實現的代碼片段中,您也可以看到一些不錯的Kotlin功能。我們可以使用縮短的函數聲明和推斷的返回類型。註釋@PathVariable不需要任何參數。輸入參數名稱被視為與變量名稱相同。當然,我們使用與Java相同的註釋。在Kotlin中,必須在構造函數中初始化聲明為非null類型的每個屬性。所以,如果你使用依賴注入初始化它,它必須聲明為lateinit。這些在PersonController中實施:

阿里P7淺析如何使用Spring Boot + Kotlin實現微服務

Kotlin自動為聲明為的類屬性生成getter和setter var。此外,如果你聲明模型作為數據類它產生equals,hashCode和toString方法。我們的模型類的聲明Person非常簡潔,如下所示。

阿里P7淺析如何使用Spring Boot + Kotlin實現微服務

我已經實現了自己的內存存儲庫類。我使用Kotlin擴展來操作元素列表。這個內置的Kotlin功能類似於Java流,不同之處在於您不必在Collection和之間執行任何轉換Stream。

阿里P7淺析如何使用Spring Boot + Kotlin實現微服務

3. 啟用執行器端點

由於我們已將Spring Boot starter與Actuator一起包含在應用程序代碼中,因此我們可以利用其生產就緒功能。Spring Boot Actuator為您提供了非常強大的工具來監控和管理您的應用程序。您可以提供高級健康檢查,信息端點或將指標發送到眾多監控系統,如InfluxDB。在包含Actuator工件之後,我們唯一要做的就是通過HTTP為我們的應用程序啟用其所有端點。

management.endpoints.web.exposure.include: '*'

我們可以自定義Actuator端點,以提供有關我們應用的更多詳細信息。一個好的做法是將有關版本和git提交的信息公開給info端點。像往常一樣,Spring Boot為這些功能提供了自動配置,因此我們唯一需要做的就是包含一些Maven插件來構建配置pom.xml。build-info設定的目標是spring-boot-maven-plugin強制它生成包含有關版本的基本信息的屬性文件。該文件位於目錄中META-INF/build-info.properties。插件git-commit-id-plugin將git.properties在根目錄中生成文件。

阿里P7淺析如何使用Spring Boot + Kotlin實現微服務

現在,您應該使用mvn clean install命令構建應用程序,然後運行它。

$ java -jar target\sample-spring-kotlin-microservice-1.0-SNAPSHOT.jar

該info端點是在地址http://localhost:8080/actuator/info. 它為我們揭示了所有有趣的信息。

阿里P7淺析如何使用Spring Boot + Kotlin實現微服務

4.啟用API文檔

構建信息和git屬性可以很容易地注入到應用程序代碼中。在某些情況下它可能很有用。其中一種情況是您已啟用自動生成的API文檔。最常用的工具是Swagger。您可以使用SpringFox Swagger項目輕鬆地將Swagger2與Spring Boot集成。首先,您需要包含以下依賴項pom.xml。

阿里P7淺析如何使用Spring Boot + Kotlin實現微服務

然後,您應該通過使用註釋配置類來啟用Swagger @EnableSwagger2。所需的信息是在BuildProperties和GitProperties,我們只需將它們注入到Swagger配置類中,如下所示。我們將它們設置為可選,以防止應用程序啟動失敗,以防它們不存在於類路徑中。

阿里P7淺析如何使用Spring Boot + Kotlin實現微服務

文檔在/swagger-ui.html路徑下可用。除API文檔外,還顯示有關應用程序版本,git commit id和分支名稱的完整信息。

5.選擇您的應用服務器

Spring Boot Web可以在三個不同的嵌入式服務器上運行:Tomcat,Jetty或Undertow。默認情況下,它使用Tomcat。要更改默認服務器,您只需要包含合適的Spring Boot啟動器並排除spring-boot-starter-tomcat。良好的做法可能是在應用程序構建期間啟用服務器之間的切換。您可以通過聲明Maven配置文件來實現它,如下所示。

阿里P7淺析如何使用Spring Boot + Kotlin實現微服務

現在,如果您想為應用程序啟用除Tomcat之外的其他服務器,則應在Maven構建期間激活相應的配置文件。

寫在最後:

歡迎留言討論,如需Java方面的架構資料,我這裡剛好有一份,怎麼領取→→→關注+轉發 然後私信“架構資料” 即可領取

點關注,不迷路,持續更新!!!


分享到:


相關文章: