1.簡介
Spring Boot CLI 為Spring Cloud 提供了Spring Boot 命令行功能。您可以編寫groovy腳本來運行Spring Cloud 組件應(yīng)用程序(例如@enableurekaserver)。您還可以輕松地執(zhí)行加密和解密等操作,以支持具有機(jī)密配置值的 SpringCloud 配置客戶端。使用啟動器cli,您可以從命令行方便地同時啟動諸如eureka、zipkin、config server等服務(wù)(這在開發(fā)時非常有用)。
這篇簡短的文章快速介紹了如何配置Spring Boot CLI并執(zhí)行簡單的終端命令來運行預(yù)配置的微服務(wù)。
我們將在本文中使用Spring Boot CLI 2.0.0.RELEASE。可以在Maven Central找到最新版本的Spring Boot CLI 。
2.設(shè)置Spring Boot CLI
設(shè)置 Spring Boot CLI 的最簡單方法之一是使用SDKMAN。可以在此處找到SDKMAN的安裝和安裝說明。
安裝SDKMAN后,運行以下命令自動安裝和配置Spring Boot CLI:
$ sdk installspringboot
要驗證安裝,請運行以下命令:
$ spring --version
我們還可以通過源代碼編譯來安裝Spring Boot CLI,Mac用戶可以使用Homebrew或MacPorts的預(yù)構(gòu)建軟件包。有關(guān)所有安裝選項,請參閱官方文檔。
3.通用終端命令
Spring Boot CLI 提供了一些開箱即用的有用命令和功能。其中一個最有用的功能是Spring Shell,它使用必要的 spring 前綴包裝命令。
要啟動嵌入式shell,我們運行:
spring shell
從這里,我們可以直接輸入所需的命令,而無需預(yù)先掛起 spring 關(guān)鍵字(因為我們現(xiàn)在在spring shell中)。
例如,我們可以通過鍵入以下內(nèi)容來顯示正在運行的CLI 的當(dāng)前版本:
version
另外中一個最重要的命令是告訴Spring Boot CLI 運行Groovy腳本:
run [SCRIPT_NAME].groovy
Spring Boot CLI 將自動推斷依賴關(guān)系,或者在給定正確提供的注釋的情況下執(zhí)行此操作。在此之后,它將啟動一個嵌入式Web容器和應(yīng)用程序。
讓我們仔細(xì)看看如何在 Spring Boot CLI 中使用Groovy腳本!
4.基本的Groovy腳本
Groovy和Spring與Spring Boot CLI結(jié)合在一起,可以在單個Groovy文件部署中快速編寫功能強(qiáng)大,高性能的微服務(wù)。
對多腳本應(yīng)用程序的支持通常需要額外的構(gòu)建工具,如Maven或Gradle。
下面我們將介紹 Spring Boot CLI 的一些最常見的用例。
有關(guān)所有Spring支持的Groovy注釋的列表,請查看官方文檔。
4.1 @Grab
@Grab注釋和Groovy的Java式的進(jìn)口條款允許依賴管理和注射。
實際上,大多數(shù)注釋都抽象、簡化并自動包含必要的import語句。這使我們可以花更多的時間來考慮架構(gòu)以及我們想要部署的服務(wù)的基礎(chǔ)邏輯。
我們來看看如何使用@Grab注釋:
package org.test
@Grab("spring-boot-starter-actuator")
@RestController
class ExampleRestController{
//...
}
正如我們所看到的,spring-boot-starter-actuator是預(yù)先配置的,允許簡潔的腳本部署,無需定制的應(yīng)用程序或環(huán)境屬性,XML或其他編程配置,但必要時可以指定這些內(nèi)容。
@Grab參數(shù)的完整列表- 每個都指定要下載和導(dǎo)入的庫 - 可在此處獲得。
4.2 @ Controller,@ RestController和@EnableWebMvc
為了進(jìn)一步加快部署,我們可以使用Spring Boot CLI提供的“抓取提示”來自動推斷要導(dǎo)入的正確依賴項。
我們將介紹下面一些最常見的用例。
例如,我們可以使用熟悉的@Controller和@Service注釋來快速構(gòu)建標(biāo)準(zhǔn)MVC控制器和服務(wù):
@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的所有默認(rèn)配置。因此,我們的Groovy應(yīng)用程序可以自動從其通常的默認(rèn)位置訪問靜態(tài)資源。
4.3 @ EnableWebSecurity
要將 Spring Boot Security 選項添加到我們的應(yīng)用程序,我們可以使用@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!"]
}
}
有關(guān)如何保護(hù)資源和處理安全性的更多詳細(xì)信息,請查看官方文檔。
4.4 @Test
要設(shè)置一個簡單的JUnit測試,我們可以添加@Grab('junit')或@Test注解:
package org.test
@Grab('junit')
class Test {
//...
}
這將允許我們輕松地執(zhí)行JUnit測試。
4.5 DataSource和JdbcTemplate
可以指定持久數(shù)據(jù)選項,包括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嵌入式數(shù)據(jù)庫并將其設(shè)置為DataSource。
5.自定義配置
使用 Spring Boot CLI 配置 Spring Boot 微服務(wù)有兩種主要方法:
- 我們可以在終端命令中添加參數(shù)
- 我們可以使用自定義的YAML文件來提供應(yīng)用程序配置
Spring Boot會自動在/config目錄中搜索application.yml或application.properties
├── app
├── app.groovy
├── config
├── application.yml
...
我們還這樣可以設(shè)置:
├── app
├── example.groovy
├── example.yml
...
應(yīng)用程序?qū)傩缘耐暾斜?,可以?a target="_blank" rel="nofollow">這里看到。
6.結(jié)論
以上是 Spring Boot CLI 的快速演練!有關(guān)更多詳細(xì)信息,請查看官方文檔。