第VII章. Spring Boot CLI
如果你想快速开发Spring应用程序,可以使用Spring Boot CLI命令行工具,它允许你运行Groovy脚本,这意味着你有一个类似的java类语法,没有那么多样板代码,你还可以引导新项目或为其编写自己的命令。
63. 安装CLI
可以使用!SDKMAN手动安装Spring Boot CLI(命令行接口)或如果你是OSX用户,可以使用Homebrew或MacPorts。有关全面的安装说明,请参阅“开始”部分中的第10.2节,“安装Spring Boot CLI”。
64. 使用CLI
一旦安装了CLI,你可以通过输入spring
并在命令行上按Enter来运行它,如果你在没有参数的情况下运行spring
,将显示一个简单的帮助屏幕,如下所示:
$ spring
usage: spring [--help] [--version]
<command> [<args>]
Available commands are:
run [options] <files> [--] [args]
Run a spring groovy script
... more command help is shown here
你可以输入spring help
来获得任何受支持命令的更多细节,如下面的示例所示:
$ spring help run
spring run - Run a spring groovy script
usage: spring run [options] <files> [--] [args]
Option Description
------ -----------
--autoconfigure [Boolean] Add autoconfigure compiler
transformations (default: true)
--classpath, -cp Additional classpath entries
-e, --edit Open the file with the default system
editor
--no-guess-dependencies Do not attempt to guess dependencies
--no-guess-imports Do not attempt to guess imports
-q, --quiet Quiet logging
-v, --verbose Verbose logging of dependency
resolution
--watch Watch the specified file for changes
version
命令提供了一种快速检查你正在使用的Spring Boot的哪个版本的方法,如下所示:
$ spring version
Spring CLI v2.0.2.RELEASE
64.1 使用CLI运行应用程序
你可以使用run
命令来编译和运行Groovy源代码,Spring Boot CLI是完全独立的,因此不需要任何外部Groovy安装。
下面的示例显示了用Groovy编写的“hello world”web应用程序:
hello.groovy
@RestController
class WebApplication {
@RequestMapping("/")
String home() {
"Hello World!"
}
}
要编译和运行应用程序,输入以下命令:
$ spring run hello.groovy
将命令行参数传递给应用程序,使用--
将命令与“spring”命令参数分离,如下例所示:
$ spring run hello.groovy -- --server.port=9000
要设置JVM命令行参数,可以使用JAVA_OPTS
环境变量,如下例所示:
$ JAVA_OPTS=-Xmx1024m spring run hello.groovy
在Microsoft Windows上设置
JAVA_OPTS
时,请确保引用整个指令,例如
set "JAVA_OPTS=-Xms256m -Xmx2048m"
,这样做可以确保将值正确地传递给进程。
64.1.1 推断“抓取”依赖项
标准Groovy包含一个@Grab
注解,它允许你声明对第三方库的依赖关系,这个有用的技术让Groovy可以像Maven或Gradle那样下载jar,但不需要你使用构建工具。
Spring Boot进一步扩展了这种技术,并尝试根据代码推断要“抓取”哪些库,例如,由于前面显示的WebApplication
代码使用了@RestController
注解,所以Spring Boot抓取了“Tomcat”和“Spring MVC”。
以下项目被用作“抓取提示”:
JdbcTemplate
,NamedParameterJdbcTemplate
,DataSource
- 抓取JDBC应用程序
@EnableJms
- 抓取JMS应用程序
@EnableCaching
- 抓取缓存的抽象
@Test
- 抓取JUnit
@EnableRabbit
- 抓取RabbitMQ
@EnableReactor
- 抓取项目反应堆
extends Specification
- 抓取Spock测试
@EnableBatchProcessing
- 抓取Spring批处理
@MessageEndpoint
@EnableIntegration
- 抓取项Spring集成
@Controller
@RestController
@EnableWebMvc
- 抓取Spring MVC +嵌入式Tomcat
@EnableWebSecurity
- 抓取Spring安全
@EnableTransactionManagement
- 抓取Spring事务管理
请参阅Spring Boot CLI源代码中的
CompilerAutoConfiguration的子类,以了解如何应用定制。