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 的快速演練!有關更多詳細信息,請查看官方文檔。