Spring Boot CLI是一个命令行工具,如果您想快速开发Spring应用程序,可以使用它。它使您可以运行Groovy脚本,这意味着您具有类似Java的熟悉语法,而没有太多样板代码。您还可以引导一个新项目或为其编写自己的命令。
1.安装CLI
可以使用SDKMAN手动安装Spring Boot CLI(命令行界面)!(SDK Manager)或使用Homebrew或MacPorts(如果您是OSX用户)。有关全面的安装说明,请参见“入门”部分中的getting-started.html。
2.使用CLI
一旦安装了CLI,就可以通过spring
在命令行中键入并按Enter来运行它。如果运行时spring
不带任何参数,则会显示帮助屏幕,如下所示:
$春天
用法:spring [—help] [—version]
<命令> [<参数>]
可用的命令有:
运行[选项] <文件> [-] [参数]
运行Spring Groovy脚本
…更多命令帮助显示在这里
您可以键入spring help
以获取有关任何受支持命令的更多详细信息,如以下示例所示:
$ spring帮助运行
春季运行-运行春季groovy脚本
用法:春季运行[选项] <文件> [-] [参数]
选项说明
——— —————-
—autoconfigure [布尔]添加自动配置编译器
转换(默认值:true)
—classpath,-cp其他类路径条目
—no-guess-dependencies不要试图猜测依赖
—no-guess-imports不要尝试猜测输入
-q,—quiet安静的日志记录
-v,—verbose详细记录依赖项
解析度
—watch监视指定文件的更改
该version
命令提供了一种快速的方法来检查您正在使用的Spring Boot版本,如下所示:
$春季版
Spring CLI v2.4.0-快照
2.1。使用CLI运行应用程序
您可以使用以下run
命令编译并运行Groovy源代码。Spring Boot CLI是完全独立的,因此您不需要任何外部Groovy安装。
以下示例显示了用Groovy编写的“ hello world” Web应用程序:
你好。
@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春季运行hello.groovy
JAVA_OPTS 在Microsoft Windows上进行 设置时,请确保引用整个说明,例如set "JAVA_OPTS=-Xms256m -Xmx2048m" 。这样做可以确保将值正确传递给流程。 |
|
---|---|
2.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。 |
延伸 Specification |
Spock测试。 |
@EnableBatchProcessing |
春季批。 |
@MessageEndpoint @EnableIntegration |
春季整合。 |
@Controller @RestController @EnableWebMvc |
Spring MVC +嵌入式Tomcat。 |
@EnableWebSecurity |
春季安全。 |
@EnableTransactionManagement |
春季交易管理。 |
请参阅CompilerAutoConfiguration Spring Boot CLI源代码中的子类,以准确了解如何应用定制。 |
|
---|---|
2.1.2。推导“抓取”坐标
Spring Boot扩展了Groovy的标准@Grab
支持,允许您指定不带组或版本的依赖项(例如@Grab('freemarker')
)。这样做可以参考Spring Boot的默认依赖元数据来推断工件的组和版本。
默认元数据与您使用的CLI版本相关。仅当您移至新版本的CLI时,它才会更改,从而使您可以控制依赖项的版本何时更改。在附录中可以找到一个表格,其中显示了默认元数据中包含的依赖关系及其版本。 | |
---|---|
2.1.3。默认导入语句
为了帮助减少Groovy代码的大小,将import
自动包含多个语句。请注意前面的例子中如何引用@Component
,@RestController
以及@RequestMapping
无需使用完全合格的名称或import
说明。
许多Spring注释无需使用import 语句即可工作。在添加导入之前,请尝试运行您的应用程序以查看失败的原因。 |
|
---|---|
2.1.4。自动主要方法
与等效的Java应用程序不同,您不需要public static void main(String[] args)
在Groovy
脚本中包含方法。系统SpringApplication
会自动创建A ,并将您的编译后的代码用作source
。
2.1.5。自定义依赖管理
默认情况下,CLI使用spring-boot-dependencies
解析@Grab
依赖项时声明的依赖项管理。可以使用@DependencyManagementBom
注释来配置其他依赖项管理,这些依赖项管理将覆盖默认的依赖项管理。注释的值应指定groupId:artifactId:version
一个或多个Maven BOM的坐标()。
例如,考虑以下声明:
@DependencyManagementBom("com.example.custom-bom:1.0.0")
前面的声明custom-bom-1.0.0.pom
在的Maven存储库中提取com/example/custom-versions/1.0.0/
。
当您指定多个BOM时,它们以声明它们的顺序应用,如以下示例所示:
@DependencyManagementBom(["com.example.custom-bom:1.0.0",
"com.example.another-bom:1.0.0"])
前面的示例表明中的依赖项管理another-bom
覆盖中的依赖项管理custom-bom
。
您可以@DependencyManagementBom
在任何可以使用的地方使用@Grab
。但是,为了确保依赖性管理的顺序一致,您最多可以@DependencyManagementBom
在应用程序中使用一次。
2.2。具有多个源文件的应用程序
您可以对所有接受文件输入的命令使用“ shell globbing”。这样可以使您从单个目录使用多个文件,如以下示例所示:
$春季运行* .groovy
2.3。打包您的应用程序
您可以使用该jar
命令将您的应用程序打包到一个独立的可执行jar文件中,如以下示例所示:
$ spring jar my-app.jar .groovy
生成的jar包含通过编译应用程序产生的类以及应用程序的所有依赖关系,以便可以使用来运行它java -jar
。jar文件还包含来自应用程序的类路径的条目。您可以使用--include
和添加和删除jar的显式路径--exclude
。两者都用逗号分隔,并且都接受前缀“ +”和“-”形式,以表示应将其从默认值中删除。默认包括以下内容:
公共/ ,资源/ ,静态/ ,模板/ ,META-INF / **,
默认排除项如下:
。,存储库/ ,构建/ ,目标/、/.jar、*/.groovyspring help jar
在命令行上键入以获取更多信息。
2.4。初始化新项目
该init
命令使您可以使用start.spring.io创建新项目,而无需离开外壳,如以下示例所示:
$ spring init —dependencies = web,data-jpa我的项目
在https://start.spring.io使用服务
将项目提取到“ /用户/开发人员/示例/我的项目”
前面的示例创建一个my-project
目录,其中包含使用spring-boot-starter-web
和的基于Maven的项目spring-boot-starter-data-jpa
。您可以使用该--list
标志列出服务的功能,如以下示例所示:
$ spring init-列表
=======================================
https://start.spring.io的功能
=======================================
可用依赖项:
———————————-
执行器-执行器:生产就绪功能可帮助您监视和管理应用程序
…
web-Web:支持全栈式Web开发,包括Tomcat和spring-webmvc
websocket-Websocket:支持WebSocket开发
ws-WS:对Spring Web Services的支持
可用的项目类型:
————————————
gradle-build-Gradle Config [格式:内部,内部:gradle]
gradle-project-Gradle项目[格式:项目,内部版本:渐变]
Maven构建-Maven POM [格式:构建,构建:Maven]
maven-project-Maven项目[格式:项目,内部版本:maven](默认)
…
该init
命令支持许多选项。有关help
更多详细信息,请参见输出。例如,以下命令创建使用Java 8和war
打包的Gradle项目:
$ spring init —build = gradle —java-version = 1.8 —dependencies = websocket —packaging = war sample-app.zip
在https://start.spring.io使用服务
内容已保存到“ sample-app.zip”
2.5。使用嵌入式外壳
Spring Boot包含用于BASH和zsh Shell的命令行完成脚本。如果您不使用这两个外壳程序(也许您是Windows用户),则可以使用shell
命令启动集成外壳程序,如以下示例所示:
$ spring shell
Spring Boot(v2.4.0-SNAPSHOT)
点击TAB完成。键入\’help’并单击RETURN以获取帮助,然后单击\’exit’退出。
在嵌入式外壳程序内部,您可以直接运行其他命令:
$版本
Spring CLI v2.4.0-快照
嵌入式外壳支持ANSI颜色输出和tab
完成。如果需要运行本机命令,则可以使用!
前缀。要退出嵌入式外壳,请按ctrl-c
。
2.6。将扩展添加到CLI
您可以使用以下install
命令将扩展添加到CLI 。该命令采用格式的一组或多组工件坐标group:artifact:version
,如以下示例所示:
$ spring install com.example:spring-boot-cli-extension:1.0.0.RELEASE
除了安装由您提供的坐标标识的工件之外,还将安装所有工件的依赖项。
要卸载依赖项,请使用uninstall
命令。与该install
命令一样,它需要一组或多组工件坐标,格式为group:artifact:version
,如以下示例所示:
$ spring卸载com.example:spring-boot-cli-extension:1.0.0.RELEASE
它将卸载由您提供的坐标及其依赖项标识的工件。
要卸载所有其他依赖项,可以使用该--all
选项,如以下示例所示:
$ spring卸载—all
3.使用Groovy Bean DSL开发应用程序
Spring Framework 4.0对beans{}
“ DSL”(从Grails借来的)具有本地支持,并且您可以使用相同的格式将Bean定义嵌入Groovy应用程序脚本中。有时,这是包括外部功能(如中间件声明)的好方法,如以下示例所示:
@Configuration(proxyBeanMethods = false)
class Application implements CommandLineRunner {
@Autowired
SharedService service
@Override
void run(String... args) {
println service.message
}
}
import my.company.SharedService
beans {
service(SharedService) {
message = "Hello World"
}
}
您可以beans{}
在同一文件中混合使用类声明,只要它们位于顶层即可;或者,如果愿意,可以将bean DSL放在单独的文件中。
4.使用settings.xml配置CLI
Spring Boot CLI使用Maven的依赖关系解析引擎Aether来解决依赖关系。CLI利用其中的Maven配置~/.m2/settings.xml
来配置Aether。CLI遵循以下配置设置:
- 离线
- 后视镜
- 伺服器
- 代理人
- 个人资料
- 激活
- 储存库
- 激活
- 活动资料
有关更多信息,请参见Maven的设置文档。
5.接下来阅读什么
GitHub存储库中提供了一些示例groovy脚本,您可以使用它们来试用Spring Boot CLI。在整个源代码中也有广泛的Javadoc 。
如果发现达到了CLI工具的极限,则可能需要考虑将应用程序转换为完整的Gradle或Maven构建的“ Groovy项目”。下一部分将介绍Spring Boot的“构建工具插件”,您可以将其与Gradle或Maven一起使用。