Spring Boot 宣布移除 run 命令,真让我猝不及防。。。

大家好,我是栈长。

昨天有粉丝反馈栈长《Spring Boot 核心技术课》中的一个问题:

Spring Boot CLI 命令行工具中的 run 命令找不到了?

这是什么鬼?后面为你揭晓原由!

Spring Boot CLI 基本介绍

Spring Boot CLI 全称即:Spring Boot Command-Line Interface,是一个构造 Spring Boot 项目命令行工具,可用于从 start.spring.io 网站构建新项目或用来密码加密。

它可以运行 Groovy 脚本,它也是 JVM 系语言,拥有和 Java 类似的语法,但它比 Java 要无比简洁,无需太多冗余的项目结构配置代码,从而可以快速构建项目。

Spring Boot 并不一定需要 Spring Boot CLI,但有了 Spring Boot CLI ,可以在无需 IDE 的情况下快速启动基于 Spring 的应用程序。

Spring Boot CLI 提供了很多快捷功能,其中一个亮点就是可以支持运行 Groovy 脚本,以快速构建 Spring 项目。

比如,栈长在桌面创建了一个简单的 app.groovy 脚本文件:

@RestController
class ThisWillActuallyRun {

    @RequestMapping("/hi")
    String home() {
       "Hello Spring Boot!"
    }

}

然后使用 Spring Boot CLI 运行命令就能直接运行了:

$ spring run app.groovy
Resolving dependencies....................

.   ____          _            __ _ _
/\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/  ___)| |_)| | | | | || (_| |  ) ) ) )
'  |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot ::                

...

...Started application in 2.544 seconds (JVM running for 4.453)
...Tomcat started on port(s): 8080 (http) with context path ''
...Started application in 2.544 seconds (JVM running for 4.453)

如上启动日志,端口启动在 8080,就像启动正常的 Java 应用程序一样,因为 Groovy 本身就是 JVM 系编程语言,在 Java 中创建一个接口可能需要一大堆的项目配置,而 Groovy 仅仅只需要一个脚本就够了。

Spring Boot CLI 移除 run 命令

栈长翻阅了大量官方资料,对比 Spring Boot 各个版本的官方文档,发现在 Spring Boot 3.0.2 版本中,移除了关于 Spring Boot CLI 可运行 Groovy 脚本的描述,如下图所示。

Spring Boot 2.7.x 文档:

Spring Boot 3.0.2 文档:

虽然 Spring Boot 3.0.1 文档中还有相关描述,但是经过测试,实际上已经在 3.0.0 版本中移除了 run 命令,并且没有新的替换命令,也就是说 Spring Boot 3.0+ 不再支持运行 Groovy 脚本了。

我又找到官方仓库中的以下参考资料:

https://github.com/spring-projects/spring-boot/issues/33482

这让我想到了 Spring Cloud 2022 这个版本,它移除了对 Spring Cloud CLI 的支持,2022 版本一共移除了以下三个模块的依赖:

  • spring-cloud-sleuth(已移除)
  • spring-cloud-cloudfoundry(已移除)
  • spring-cloud-cli(已移除)

另外,据栈长所知,Spring Boot CLI 命令行虽然很犀利,但实际开发工作中确很少使用到,没什么人用还要持续维护,所以官方决定精简该命令行工具就不觉得奇怪了。

Spring Boot 3.0.0 里程碑版本还能用,到了正式版就移除了,真是有点猝不及防。。

关于这点更新,Spring Boot 的版本更新文档也没有描述,栈长之前确实没测试到,昨天栈长也把《Spring Boot 核心技术课》中的 Spring Boot CLI 内容做了相关更新:

最后,如果你还没用过 Spring Boot,最后推荐下栈长的《Spring Boot 核心技术课》,基于最新 Spring Boot 3.x 主版本,持续更新,包括底层实现原理及代码实战,知识点非常齐全,助你快速打通 Spring Boot 的各个环节。

Spring Boot 最新最全的实战代码已上传 Github:

https://github.com/javastacks/spring-boot-best-practice

好了,今天的分享就到这里了,后续栈长也会继续关注并分享更多的 Spring Boot 干货,关注公众号Java技术栈第一时间推送。

版权声明: 本文系公众号 "Java技术栈" 原创,转载、引用本文内容请注明出处,抄袭、洗稿一律投诉侵权,后果自负,并保留追究其法律责任的权利。

近期热文推荐:

1.1,000+ 道 Java面试题及答案整理(2022最新版)

2.劲爆!Java 协程要来了。。。

3.Spring Boot 2.x 教程,太全了!

4.别再写满屏的爆爆爆炸类了,试试装饰器模式,这才是优雅的方式!!

5.《Java开发手册(嵩山版)》最新发布,速速下载!

觉得不错,别忘了随手点赞+转发哦!

热门相关:总裁的天价小妻子   与沉迷于汽车性爱的已婚妇女   网游三国之城市攻略   我是仙凡   上将大叔,狼来了!