文章目录
- 安装 Spring Boot CLI
- 演示项目结构
- 用 Spring Boot CLI 创建 Hello World 示例
- 使用 @Grab 注释
- Spring Boot CLI 测试应用程序
- 使用 Spring Boot CLI 打包应用程序
- 使用 Spring Boot CLI 创建一个新项目
- 使用嵌入式 Shell
- 参考文献
- 源码下载
在这一页,我们将提供spring boot CLI
的例子。
Spring boot CLI
是运行spring boot
命令的命令行界面。
Spring
提供了用于创建、运行和测试spring boot
应用程序的spring
命令。
Spring boot CLI
应用程序使用groovy
语言,通过这种方式,我们用最少的代码行创建我们的应用程序并启动它。
使用groovy
的Spring boot CLI
具有以下特点。
1. Spring boot CLI
应用程序使用groovy
。我们在应用程序中创建groovy文件,为此我们不需要提供groovy
的任何JAR
依赖。Spring boot
会自己配置groovy
的JAR
依赖项。
2. 在编写groovy
文件时,我们不需要写导入语句,直到需要为止。在写导入语句之前,我们应该检查我们是否得到导入错误。通过这种方式,我们尽可能地写出最少的代码行数。
3. Spring boot CLI
不需要任何构建工具。Spring boot
以与Maven
和Gradle
相同的方式自动抓取spring
依赖JAR
包。版本是从Spring Boot CLI
的版本中提取的。
4. Spring boot
下载JAR依赖项时,通过记住我们在应用程序编码中使用了哪些spring
注解和类。如果我们使用@Controller
注解,那么Spring Boot
就会下载Spring Web
应用程序的JAR
依赖项。
5. 为了下载第三方依赖的JAR
,如thymleaf
,spring boot
使用@Grab
注释groovy
功能。
6. Spring boot
提供spring run
命令来运行应用程序,spring test
命令来运行spring
测试应用程序。
7. 我们可以使用spring boot
命令行创建可执行的JAR
文件。对于应用程序的打包,spring boot
提供spring jar
命令。
8. 使用命令行界面,我们可以使用spring init
命令从spring initializer
站点创建项目。
9. Spring boot
为Windows
用户提供了使用spring shell
命令的集成外壳。
10. 使用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
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
时,我们可以用最少的代码运行我们的应用程序。在我们的代码中,我们将得到以下结果。
1. 默认的导入语句。在大多数情况下,我们不需要导入API
。只有在不属于默认导入语句的情况下才可以导入。
2. spring boot
没有main
方法。它将被自动创建。
为了编译和运行Groovy
源代码,Spring boot CLI
提供了run
命令,我们按以下方式调用。
spring run hello.groovy
使用该命令,我们实现了以下几点。
1. 它下载所有的依赖性JAR
。依赖性JAR
的版本由我们所使用的Spring boot CLI
的版本决定。下载JAR
只在第一次时进行。
2. 依赖性JAR
是由代码中使用的类和注解定义的。由于我们使用的是@RestController
,所以会下载与Spring MVC
和嵌入式Tomcat
相关的JAR
。
3. 现在它编译代码并在默认端口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
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Spring Boot CLI Example</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p th:text="'Message: ' + ${message}" />
</body>
</html>
static/index.html
<!DOCTYPE HTML>
<html>
<head>
<title>Spring Boot CLI Example</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p>Click to get <a href="/msg">Message</a> </p>
</body>
</html>
要运行这个例子,在项目的根目录下用命令提示符运行以下命令。
spring run *.groovy
现在访问 http://localhost:8080/
Spring boot
只需要@Grab
注解来解决第三方JAR
,例如spring-boot-starter-thymeleaf
,freemarker
等。
Spring boot
会根据需要自动抓取spring JAR
。
例如,如果我们使用以下注解和类,那么相关的JAR依赖将被自动下载。
1. @Controller @RestController @EnableWebMvc : 在这种情况下,Spring MVC
和嵌入式Tomcat
将被下载。
2. @EnableWebSecurity : Spring
安全相关的JAR
将被下载。
3. @EnableJms: JMS
应用程序相关的JAR
将被下载。
4. @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
找到打印界面。
参考文献
【1】Installing Spring Boot【2】Using the CLI【3】Spring Boot CLI Example
源码下载