SpringBoot快速開發利器:Spring Boot CLI
Spring boot CLI是運行spring boot命令的命令行界面。
Spring提供了用于創建、運行和測試spring boot應用程序的spring命令。
Spring boot CLI應用程序使用groovy語言,通過這種方式,我們用最少的代碼行創建我們的應用程序并啟動它。
使用groovy的Spring boot CLI具有以下特點。
- Spring boot CLI應用程序使用groovy。我們在應用程序中創建groovy文件,為此我們不需要提供groovy的任何JAR依賴。Spring boot會自己配置groovy的JAR依賴項。
- 在編寫groovy文件時,我們不需要寫導入語句,直到需要為止。在寫導入語句之前,我們應該檢查我們是否得到導入錯誤。通過這種方式,我們盡可能地寫出最少的代碼行數。
- Spring boot CLI不需要任何構建工具。Spring boot以與Maven和Gradle相同的方式自動抓取spring依賴JAR包。版本是從Spring Boot CLI的版本中提取的。
- Spring boot下載JAR依賴項時,通過記住我們在應用程序編碼中使用了哪些spring注解和類。如果我們使用
@Controller注解,那么Spring Boot就會下載Spring Web應用程序的JAR依賴項。 - 為了下載第三方依賴的JAR,如thymleaf,spring boot使用
@Grab注釋groovy功能。 - Spring boot提供
spring run命令來運行應用程序,spring test命令來運行spring測試應用程序。 - 我們可以使用spring boot命令行創建可執行的JAR文件。對于應用程序的打包,spring boot提供
spring jar命令。 - 使用命令行界面,我們可以使用spring init命令從
spring initializer站點創建項目。 - Spring boot為Windows用戶提供了使用
spring shell命令的集成外殼。 - 使用spring boot CLI時,我們不需要創建
spring boot main()方法。它是由spring boot CLI自動提供的。
在這一篇,我們將安裝spring boot CLI,然后我們將創建一個spring boot CLI示例應用程序,并運行它和測試它。
安裝 Spring Boot CLI
要使用Spring boot CLI,首先我們需要在系統中安裝它。有很多方法可以安裝Spring boot CLI。
- 手動安裝
- 使用SDKMAN進行安裝!
- OSX自制軟件的安裝
- MacPorts的安裝
- 命令行完成
找到Spring boot CLI安裝細節的鏈接。在我的例子中,我將在我的Windows 7操作系統中使用手動安裝來安裝Spring boot CLI。找到下面的步驟。
步驟1:使用以下鏈接下載Spring boot CLI
http://repo.spring.io/release/org/springframework/boot/spring-boot-cli/1.4.3.RELEASE/spring-boot-cli-1.4.3.RELEASE-bin.zip
步驟2:解壓縮并保存在你系統的某個地方。假設我把它保存在如下位置。
C:\spring-1.4.3.RELEASE
現在我們需要在我們的系統中設置以下環境變量。
- SPRING_HOME的值為
C:\spring-1.4.3.RELEASE - PATH的值為
C:\spring-1.4.3.RELEASE\bin
步驟3:現在我們將測試我們的安裝。打開命令提示符并鍵入命令spring,我們將得到以下結果。

查找更多Spring boot CLI命令。
spring help run: 提供支持的命令的詳細信息。spring version: 提供Spring boot CLI的版本。
現在我們可以開始使用Spring boot CLI了。
演示項目結構
找到演示項目結構,我們將使用spring boot CLI和groovy來運行。
spring-app | --message.groovy --hello.groovy --tests.groovy --templates | --hello.html --static | --index.html
用 Spring Boot CLI 創建 Hello World 示例
我們將使用Groovy創建一個簡單的 "Hello World"網絡應用。請看下面的代碼。
hello.groovy
@RestController
class HelloController {
@RequestMapping("/home")
String home() {
"Hello World!"
}
}
當我們使用Spring boot CLI和Groovy時,我們可以用最少的代碼運行我們的應用程序。在我們的代碼中,我們將得到以下結果。
- 默認的導入語句。在大多數情況下,我們不需要導入API。只有在不屬于默認導入語句的情況下才可以導入。
- spring boot沒有main方法。它將被自動創建。
為了編譯和運行Groovy源代碼,Spring boot CLI提供了run命令,我們按以下方式調用。
spring run hello.groovy
使用該命令,我們實現了以下幾點。
- 它下載所有的依賴性JAR。依賴性JAR的版本由我們所使用的Spring boot CLI的版本決定。下載JAR只在第一次時進行。
- 依賴性JAR是由代碼中使用的類和注解定義的。由于我們使用的是
@RestController,所以會下載與Spring MVC和嵌入式Tomcat相關的JAR。 - 現在它編譯代碼并在默認端口8080上啟動嵌入式Tomcat服務器。
找到打印界面。

通過URL http://localhost:8080/home 來訪問該應用程序。

如果我們想改變默認端口,那么我們需要用server.port運行命令,如下所示。
spring run hello.groovy -- --server.port=8484
我們需要注意,我們將使用分隔符--與spring命令參數--server.port一起。現在,嵌入式Tomcat將以8484端口啟動,為了運行應用程序,我們需要使用http://localhost:8484/home來訪問。
如果我們有多個groovy文件,并且要一起運行所有這些groovy文件,我們可以使用以下命令。
spring run *.groovy
使用 @Grab 注釋
Groovy提供了@Grab注解來解決JAR的依賴性。
Spring boot也支持@Grab注解,只解決第三方的依賴。
根據Spring注解和應用程序中使用的類,Spring的依賴性被自動抓取。
它下載JAR的方式與Maven和Gradle相同,無需使用任何構建工具。我們使用@Grab注解來下載第三方依賴,如下所示。
@Grab('spring-boot-starter-thymeleaf')
class MessageController {}
在上面的代碼中,我們將看到我們只需要傳遞artifact id。Group id 和 version將從spring boot的默認依賴元數據中獲取。
現在找到這個例子中使用的groovy和HTML文件。
message.groovy
@Controller
@Grab('spring-boot-starter-thymeleaf')
class MessageController {
@RequestMapping("/msg")
String getMsg(Model model) {
String msg = "Welcome to Everyone!";
model.addAttribute("message", msg);
return "hello";
}
}
templates/hello.html
HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Spring Boot CLI Exampletitle>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
head>
<body>
<p th:text="'Message: ' + ${message}" />
body>
html>
static/index.html
HTML> <html> <head> <title>Spring Boot CLI Exampletitle> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> head> <body> <p>Click to get <a href="/msg">Messagea> p> body> html>
要運行這個例子,在項目的根目錄下用命令提示符運行以下命令。
spring run *.groovy
現在訪問 http://localhost:8080/
Spring boot只需要@Grab注解來解決第三方JAR,例如spring-boot-starter-thymeleaf,freemarker等。
Spring boot會根據需要自動抓取spring JAR。
例如,如果我們使用以下注解和類,那么相關的JAR依賴將被自動下載。
- @Controller @RestController @EnableWebMvc : 在這種情況下,Spring MVC和嵌入式Tomcat將被下載。
- @EnableWebSecurity : Spring安全相關的JAR將被下載。
- @EnableJms: JMS應用程序相關的JAR將被下載。
- @Test : 將會下載Spring測試應用相關的JAR。
具體請查看鏈接中的Deduced “grab” Dependencies部分
Spring Boot CLI 測試應用程序
Spring boot CLI提供了test命令,我們可以用它來測試我們的spring boot應用程序。找到我們例子中使用的groovy類來測試hello.groovy。
tests.groovy
class ApplicationTests {
@Test
void HelloAppTest() {
assertEquals("Hello World!", new HelloController().home())
}
}
要運行測試應用程序,請使用以下命令。
spring test hello.groovy tests.groovy
上述命令的說明如下。
spring test:Spring boot CLI命令,用于測試應用程序。hello.groovy:需要測試的應用程序文件。tests.groovy:測試文件,用于測試應用程序文件。
運行該命令后,我們得到的結果如下。

使用 Spring Boot CLI 打包應用程序
Spring boot CLI提供了jar命令來打包我們的應用程序。我們可以按以下方式使用它。
spring jar spring-app.jar *.groovy
這將創建兩個JAR。
spring-app.jar: 這是可執行的JAR。spring-app.jar.original: 這是原JAR。
可執行的jar文件的運行方式如下。
java -jar spring-app.jar
找到打印界面。

在打包應用程序時,spring boot默認包括以下目錄。
public/**, resources/**, static/**, templates/**, META-INF/**
而默認的排除目錄是
repository/**, build/**, target/**, **/*.jar, **/*.groovy
使用--include,我們可以將默認排除目錄添加到打包的目錄中。使用--exclude,我們可以刪除打包的目錄。有關更多詳細信息,我們可以按如下方式運行help命令。
spring help jar
使用 Spring Boot CLI 創建一個新項目
使用init命令,Spring boot CLI可以用maven作為默認的構建工具創建一個新項目,該工具使用https://start.spring.io。假設我們想用thymleaf創建一個Web項目,那么我們將運行如下命令。
spring init --dependencies=web,thymeleaf my-app.zip
在pom.xml中,web,thymeleaf的依賴關系將配置為以下spring boot啟動器。
spring-boot-starter-web spring-boot-starter-thymeleaf
my-app.zip文件將被下載到我們運行命令的目錄中。

如果我們想使用Gradle構建工具,用任何特定的java版本構建WAR文件,那么我們可以運行如下命令。
spring init --build=gradle --java-version=1.8 --dependencies=web,thymeleaf --packaging=war my-app.zip
使用嵌入式 Shell
Spring boot有BASH和Zsh shells的命令行完成腳本。
如果我們使用WINDOWS,Spring Boot提供shell命令來啟動一個集成shell。如果使用WINDOWS,那么使用以下命令啟動集成shell。
spring shell
現在我們可以直接運行命令而不使用spring關鍵字,如
$ version $ test hello.groovy tests.groovy $ run hello.groovy
找到打印界面。

參考文獻
- http://docs.spring.io/spring-boot/docs/current/reference/html/getting-started-installing-spring-boot.html
- https://docs.spring.io/spring-boot/docs/current/reference/html/cli-using-the-cli.html
- https://www.concretepage.com/spring-boot/spring-boot-cli-example
源碼下載
- https://www.concretepage.com/spring-boot/download/spring-boot-cli-example.zip