SpringBoot快速开发利器:CLI 属实真牛逼!

article/2025/9/18 23:22:18

欢迎关注方志朋的博客,回复”666“获面试宝典

d0f91df857bf9148512b6b9a5e204656.png来源:blog.csdn.net/qq_31635851/article/details/120411711/

  • 安装 Spring Boot CLI

  • 演示项目结构

  • 用 Spring Boot CLI 创建 Hello World 示例

  • 使用 @Grab 注释

  • Spring Boot CLI 测试应用程序

  • 使用 Spring Boot CLI 打包应用程序

  • 使用 Spring Boot CLI 创建一个新项目

  • 使用嵌入式 Shell

  • 参考文献

  • 源码下载


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

http://repo.spring.io/release/org/springframework/boot/spring-boot-cli/1.4.3.RELEASE/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,我们将得到以下结果。

45a773008c53cb6d1aa5c8d615890063.png

图片

查找更多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服务器。

找到打印界面。

1333d252781a534c346dfa6607499a50.png

图片

通过URL http://localhost:8080/home 来访问该应用程序。

df941564c4f742ed15b4d89a8be9ed01.png

图片

如果我们想改变默认端口,那么我们需要用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 {@Testvoid HelloAppTest() {assertEquals("Hello World!", new HelloController().home())}
}

要运行测试应用程序,请使用以下命令。

spring test hello.groovy tests.groovy

上述命令的说明如下。

  • spring test:Spring boot CLI命令,用于测试应用程序。

  • hello.groovy:需要测试的应用程序文件。

  • tests.groovy:测试文件,用于测试应用程序文件。

运行该命令后,我们得到的结果如下。

f4fe782aba86b17d676c88f734bb3659.png

图片

使用 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

找到打印界面。

1378c86da00d1675cca89294b69cbcec.png

图片

在打包应用程序时,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文件将被下载到我们运行命令的目录中。

76ef30c3ffa29935ea10cdb9322f7923.png

图片

如果我们想使用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

找到打印界面。

2793436bcc400c443f3e088865472770.png

图片

源码下载

  • https://www.concretepage.com/spring-boot/download/spring-boot-cli-example.zip

 
 
 
 
 
热门内容:
  • 吐血推荐17个提升开发效率的“轮子”

  • 微信为什么使用 SQLite 保存聊天记录?

  • Spring中毒太深,离开Spring居然连最基本的接口都不会写了

  • 面试官:线上MySQL的自增id用尽怎么办?

  • 别再写 main 方法测试了,太 Low!这才是专业 Java 测试方法!

 

2f636df59f98a59929e39e0715282294.jpeg

 
最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。
获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

明天见(。・ω・。)


http://chatgpt.dhexx.cn/article/vd6wdMU9.shtml

相关文章

一个程序员的水平能差到什么程度?

欢迎关注方志朋的博客&#xff0c;回复”666“获面试宝典 来源&#xff1a;www.zhihu.com/question/314644210 逛知乎的时候&#xff0c;看到一个有意思的话题&#xff1a;一个程序员的水平能差到什么程度&#xff1f; 看了下面的回答&#xff0c;不得不说&#xff0c;真是小刀…

spring boot面试问题集锦

方志鹏 2019/09/06 Q: 什么是spring boot&#xff1f; A&#xff1a;多年来&#xff0c;随着新功能的增加&#xff0c;spring变得越来越复杂。只需访问页面https://spring.io/projects&#xff0c;我们将看到所有在应用程序中使用的不同功能的spring项目。如果必须启动一个新…

五分钟体验分布式事务框架Seata

Seata 是一款开源的分布式事务解决方案&#xff0c;致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式&#xff0c;为用户打造一站式的分布式解决方案。本教程旨在为读者提供一个快速入门seata的案例&#xff0c;详细使用请参考…

SpringBoot非官方教程 | 第二十五篇:2小时学会springboot

转载请标明出处&#xff1a; https://www.fangzhipeng.com/springboot/2017/05/25/sb25-2hour.html 本文出自方志朋的博客 一.什么是spring boot Takes an opinionated view of building production-ready Spring applications. Spring Boot favors convention over configurat…

Spring Cloud Alibaba教程:使用Nacos作为配置中心

转载请标明出处&#xff1a; https://blog.csdn.net/forezp/article/details/90729945 本文出自方志朋的博客 个人博客纯净版https://www.fangzhipeng.com/springcloud/2019/06/01/sc-nacos-config.html 在上一篇文章中讲解了如何使用Nacos作为服务注册中心注册。Nacos除了可以…

20 个实例玩转 Java 8 Stream

点击关注公众号&#xff0c;Java干货及时送达 先贴上几个案例&#xff0c;水平高超的同学可以挑战一下&#xff1a; 1. 从员工集合中筛选出salary大于8000的员工&#xff0c;并放置到新的集合里。 2. 统计员工的最高薪资、平均薪资、薪资之和。 3. 将员工按薪资从高到低排序&am…

2019新鲜出炉的BAT通关面试题 Java岗

点击上方“方志朋”&#xff0c;选择“置顶或者星标” 你的关注意义重大&#xff01; 来源于公号&#xff1a;孤独烟 由于近期是互联网寒冬&#xff0c;然而烟哥的好友还是顶着重重压力出去面试&#xff0c;最终斩获无数offer。 在烟哥的沟通下&#xff0c;终于套得其中一套题…

史上最简单的SpringCloud教程 | 第二篇: 服务消费者(rest+ribbon)

转载请标明出处&#xff1a; https://www.fangzhipeng.com/springcloud/2017/06/02/sc02-rest-ribbon.html 本文出自方志朋的博客 个人博客纯净版&#xff1a;https://www.fangzhipeng.com/springcloud/2017/06/02/sc02-rest-ribbon.html 最新Finchley版本&#xff1a; https:…

史上最简单的 SpringCloud 教程 | 终章

转载请标明出处&#xff1a; http://blog.csdn.net/forezp/article/details/70148833 本文出自方志朋的博客 扫码关注有惊喜 &#xff08;转载本站文章请注明作者和出处 方志朋的博客&#xff09; 个人博客纯净版https://www.fangzhipeng.com/spring-cloud.html 错过了这一篇…

SpringCloud-Finchley集成Zuul服务网关组件并实现回退

1.服务网关Zuul介绍 服务网关是微服务架构中一个不可或缺的部分。通过服务网关统一向外系统提供REST API的过程中&#xff0c;除了具备服务路由、均衡负载功能之外&#xff0c;它还具备了权限控制等功能。Spring Cloud Netflix中的Zuul就担任了这样的一个角色&#xff0c;为微…

数控机床设备物联网远程控制解决方案

数控机床设备应用物联网技术方案实现远程监控管理背景 数控机床设备利用先进的计算机和网络技术进行设备物联网。利用计算机硬件、软件、网络设备通信设备以及其他办公设备,进行信息的收集、传输、加工、储存、更新和维护,以战略竟优、提高效率为目的,支持高层决策、中层管理…

远程控制树莓派

一、局域网 1. 让树莓派连上手机热点或wifi 将空白的ssh文件放入树莓派SD卡的boot盘 手动创建一个空白记事本.txt文件&#xff0c;命名为ssh&#xff0c;重命名&#xff0c;删掉.txt扩展名。将这个文件放入SD卡的boot盘中。 配置wifi文件&#xff0c;放入SD卡的boot盘 用同样…

推荐一款国产远程控制软件ToDesk,轻量级,不限速,开启云办公新模式

一、远程办公新时代 前段时间&#xff0c;我们公司使用的向日葵远程控制竟然崩了&#xff0c;导致无法登录&#xff0c;当时以为是公司网络出问题了&#xff0c;结果并妹有。后来就看到官方回应说&#xff0c;因为大量用户涌入导致服务器宕机了&#xff01; 不管你们信不信&a…

远程控制电脑

任意网络环境下的设备远程控制任意网络环境下的设备 对于远程操控电脑已经不是什么难的事情了&#xff0c;但是对于有的操作方法其实还是有难度的&#xff0c;今天我就介绍一下如何远程控制电脑。 1、远程控制的好处 远程控制的好处那就多了&#xff0c;不管你是学生还是…

企业如何实现IoT物联网远程控制

在IoT物联网革命中&#xff0c;一切都正在变得智能化&#xff0c;因此也可以称其为连接设备的革命。如今&#xff0c;物联网采用信息化技术手段&#xff0c;促进了人类生活和生产服务的全面升级&#xff0c;从智能家居硬件、智能穿戴、智能交通、智能医疗、智能车载、嵌入式开发…

服务器如何开启远程控制,远程控制命令设置方法介绍

大家在长时间的使用电脑以后,电脑就会出现一些毛病,这个时候人们都会给电脑维修工打电话亲上 门 儿服务,而大家都知道上门儿服务费用是非常的高的。但是远程控制出现就解决了这个问题,大家可以通过网络工程师对自己电脑进行远程控制,从而实现修理电脑的目的。但是有非常多…

快速实现远程控制Android手机

直接在web端或者手机端远程控制其他手机&#xff0c;想想都刺激&#xff0c;于是在google上一阵狂搜&#xff0c;发现很多方案都要root手机&#xff0c;直接pass&#xff0c;还有的方案需要写大量看不懂的代码&#xff0c;pass。最近一直在研究的冰狐智能辅助平台出了一个远程控…

内网远程控制安卓设备软件推荐

有些企业需要在内网环境远程控制安卓设备&#xff0c;实现批量维护安卓设备等需求。有什么软件或者解决方案&#xff0c;可以实现内网远程控制安卓设备呢&#xff1f; 这个问题要分两个情况解决&#xff0c;看你能不能走外网。如果IT和安卓设备属于同一个局域网&#xff0c;但…

向日葵远程控制的使用方法

1. 首先在办公电脑上下载安装向日葵远程控制端&#xff0c;注册账号&#xff0c;记录保存“允许控制本机”的“本机识别码”和“本机验证码”&#xff0c;并设置“开机自动启动”&#xff0c;保持向日葵的开启状态&#xff1b; 2. 在家用电脑上下载安装向日葵远程控制端&#…

远程控制工具哪个好?向日葵VS ToDesk,安卓移动设备远程操控哪个更好用?

现如今&#xff0c;科技的发展&#xff0c;使得手机的功能也越来越智能化&#xff0c;可有些小伙伴对智能化手机有许多不会操作的地方&#xff0c;这时&#xff0c;就可以利用远程手机软件&#xff0c;来请求别人的远程帮助。或者&#xff0c;当我们的手机丢失了&#xff0c;也…