第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”。

以下项目被用作“抓取提示”:

JdbcTemplateNamedParameterJdbcTemplateDataSource

  • 抓取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的子类,以了解如何应用定制。

64.1.2 推断出“抓取”坐标


博弈
2.5k 声望1.5k 粉丝

态度决定一切