Spring Boot四大神器之CLI
1.簡介
Spring Boot CLI 為Spring Cloud 提供了Spring Boot 命令列功能。您可以編寫groovy指令碼來執行Spring Cloud 元件應用程式(例如@enableurekaserver)。您還可以輕鬆地執行加密和解密等操作,以支援具有機密配置值的 SpringCloud 配置客戶端。使用啟動器cli,您可以從命令列方便地同時啟動諸如eureka、zipkin、config server等服務(這在開發時非常有用)。
這篇簡短的文章快速介紹瞭如何配置Spring Boot CLI並執行簡單的終端命令來執行預配置的微服務。
我們將在本文中使用Spring Boot CLI 2.0.0.RELEASE。可以在Maven Central 找到最新版本的Spring Boot CLI 。
2.設定Spring Boot CLI
設定 Spring Boot CLI 的最簡單方法之一是使用SDKMAN。可以在此處 找到SDKMAN的安裝和安裝說明。
安裝SDKMAN後,執行以下命令自動安裝和配置Spring Boot CLI:
$ sdk installspringboot
要驗證安裝,請執行以下命令:
$ spring --version
我們還可以通過原始碼編譯來安裝Spring Boot CLI,Mac使用者可以使用Homebrew或MacPorts的預構建軟體包。有關所有安裝選項,請參閱官方文件 。
3.通用終端命令
Spring Boot CLI 提供了一些開箱即用的有用命令和功能。其中一個最有用的功能是Spring Shell,它使用必要的 spring 字首包裝命令。
要啟動嵌入式shell,我們執行:
spring shell
從這裡,我們可以直接輸入所需的命令,而無需預先掛起 spring 關鍵字(因為我們現在在spring shell中)。
例如,我們可以通過鍵入以下內容來顯示正在執行的CLI 的當前版本:
version
另外中一個最重要的命令是告訴Spring Boot CLI 執行Groovy指令碼:
run [SCRIPT_NAME].groovy
Spring Boot CLI 將自動推斷依賴關係,或者在給定正確提供的註釋的情況下執行此操作。在此之後,它將啟動一個嵌入式Web容器和應用程式。
讓我們仔細看看如何在 Spring Boot CLI 中使用Groovy指令碼!
4.基本的Groovy指令碼
Groovy和Spring與Spring Boot CLI結合在一起,可以在單個Groovy檔案部署中快速編寫功能強大,高效能的微服務。
對多指令碼應用程式的支援通常需要額外的構建工具,如Maven或Gradle。
下面我們將介紹 Spring Boot CLI 的一些最常見的用例。
有關所有Spring支援的Groovy註釋的列表,請檢視官方文件 。
4.1 @Grab
@Grab註釋和Groovy的Java式的進口條款允許依賴管理和注射。
實際上,大多數註釋都抽象、簡化並自動包含必要的import語句。這使我們可以花更多的時間來考慮架構以及我們想要部署的服務的基礎邏輯。
我們來看看如何使用@Grab註釋:
package org.test @Grab("spring-boot-starter-actuator") @RestController class ExampleRestController{ //... }
正如我們所看到的,spring-boot-starter-actuator是預先配置的,允許簡潔的指令碼部署,無需定製的應用程式或環境屬性,XML或其他程式設計配置,但必要時可以指定這些內容。
@Grab引數的完整列表- 每個都指定要下載和匯入的庫 - 可在此處 獲得。
4.2 @ Controller,@ RestController和@EnableWebMvc
為了進一步加快部署,我們可以使用Spring Boot CLI提供的“抓取提示”來自動推斷要匯入的正確依賴項。
我們將介紹下面一些最常見的用例。
例如,我們可以使用熟悉的@Controller和@Service註釋來快速構建標準MVC控制器和服務:
@RestController class Example { @Autowired private MyService myService; @GetMapping("/") public String helloWorld() { return myService.sayWorld(); } } @Service class MyService { public String sayWorld() { return "World!"; } }
Spring Boot CLI支援Spring Boot的所有預設配置。因此,我們的Groovy應用程式可以自動從其通常的預設位置訪問靜態資源。
4.3 @ EnableWebSecurity
要將 Spring Boot Security 選項新增到我們的應用程式,我們可以使用@EnableWebSecurity註解,然後由 Spring Boot CLI 自動下載。
下面,我們將使用spring-boot-starter-security依賴項來抽象此過程的一部分,該依賴項利用了引擎下的@EnableWebSecurity註釋:
package org.test @Grab("spring-boot-starter-security") @RestController class SampleController { @RequestMapping("/") public def example() { [message: "Hello World!"] } }
有關如何保護資源和處理安全性的更多詳細資訊,請檢視官方文件 。
4.4 @Test
要設定一個簡單的JUnit測試,我們可以新增@Grab('junit')或@Test註解:
package org.test @Grab('junit') class Test { //... }
這將允許我們輕鬆地執行JUnit測試。
4.5 DataSource和JdbcTemplate
可以指定持久資料選項,包括DataSource或JdbcTemplate,而無需顯式使用@Grab註釋:
package org.test @Grab('h2') @Configuration @EnableWebMvc @ComponentScan('org.test') class DataConfig { @Bean DataSource dataSource() { return new EmbeddedDatabaseBuilder() .setType(EmbeddedDatabaseType.H2).build(); } }
通過簡單地使用熟悉的Spring bean配置約定,我們獲取了H2嵌入式資料庫並將其設定為DataSource。
5.自定義配置
使用 Spring Boot CLI 配置 Spring Boot 微服務有兩種主要方法:
- 我們可以在終端命令中新增引數
- 我們可以使用自定義的YAML檔案來提供應用程式配置
Spring Boot會自動在/config目錄中搜索application.yml或application.properties
├── app ├── app.groovy ├── config ├── application.yml ...
我們還這樣可以設定:
├── app ├── example.groovy ├── example.yml ...
應用程式屬性的完整列表,可以在這裡 看到。
6.結論
以上是 Spring Boot CLI 的快速演練!有關更多詳細資訊,請檢視官方文件 。