1. 簡介
Spring Boot CLI 是一個 命令行抽象,允許我們輕鬆地運行以 Groovy 腳本表達的 Spring 微服務。它還為這些服務提供了簡化的依賴管理功能。
本文將快速介紹 如何配置 Spring Boot CLI 並執行簡單的終端命令以運行預配置的微服務。
我們將使用 Spring Boot CLI 2.0.0.RELEASE。最新版本的 Spring Boot CLI 可在 Maven Central 找到:Maven Central。
2. 設置 Spring Boot CLI
使用 SDKMAN 是設置 Spring Boot CLI 最簡單的方式。有關 SDKMAN 的設置和安裝説明,請參考 這裏。
安裝 SDKMAN 後,請運行以下命令以自動安裝和配置 Spring Boot CLI:
$ sdk install springboot要驗證安裝,請運行以下命令:
$ spring --version我們還可以通過從源代碼編譯方式安裝 Spring Boot CLI。Mac 用户可以使用來自 Homebrew 或 MacPorts 的預構建包。請參閲官方 文檔 以獲取所有安裝選項。
3. 常用終端命令
Spring Boot CLI 提供了一些有用的命令和功能,無需額外配置。其中最實用的功能之一是 Spring Shell,它通過添加必要的 spring 前綴來包裝命令。
要 啓動嵌入式 shell,我們運行:
spring shell從這裏,我們可以直接輸入所需命令,無需事先添加 spring 關鍵字(因為我們現在處於 spring 殼內)。
例如,我們可以 顯示當前運行的 CLI 版本,只需輸入:
version最重要的一條命令是告訴 Spring Boot CLI 運行一個 Groovy 腳本:
run [SCRIPT_NAME].groovySpring Boot CLI 將自動推斷依賴項,或在正確提供標註後進行推斷。之後,它將啓動嵌入式 Web 容器和應用程序。
讓我們更詳細地瞭解如何使用 Groovy 腳本與 Spring Boot CLI 配合使用!
4. 必備 Groovy 腳本
Groovy 和 Spring 通過 Spring Boot CLI 能夠 實現快速編寫高性能微服務的腳本化部署,從而快速構建強大的微服務.
對於支持多腳本應用程序,通常需要額外的構建工具,如 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 bael.security
@Grab("spring-boot-starter-security")
@RestController
class SampleController {
@RequestMapping("/")
public def example() {
[message: "Hello World!"]
}
}
為了更詳細地瞭解如何保護資源和處理安全,請參閲官方 文檔。
4.4. @Test
為了設置一個簡單的 JUnit 測試,我們可以添加 @Grab('junit') 或 @Test 註解:
package bael.test
@Grab('junit')
class Test {
//...
}這將使我們能夠輕鬆地執行 JUnit 測試。
4.5. DataSource 和 JdbcTemplate
持久化數據選項可以指定包括 DataSource 或 JdbcTemplate,無需顯式使用 @Grab 註解。
package bael.data
@Grab('h2')
@Configuration
@EnableWebMvc
@ComponentScan('bael.data')
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</em/> 目錄中的 application.yml</em/> 或 application.properties</em/>。
├── app
├── app.groovy
├── config
├── application.yml
...
我們還可以設置:
├── app
├── example.groovy
├── example.yml
...完整的應用程序屬性列表可以在 Spring 處找到,Spring。
6. 結論
本篇快速介紹 Spring Boot CLI 結束了。欲瞭解更多詳細信息,請參閲官方文檔:文檔。