专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

Spring Boot CLI 教程详解:快速运行项目、加载依赖、构建轻量服务

一、为啥非得整 Spring Boot CLI?你问对人了!

兄弟你可能疑惑,Spring Boot 不是好好的吗?为啥还得扯个 CLI(命令行工具)出来,图啥?我直接给你整明白:

说句人话哈:CLI 就是你写 demo、测想法、干临时活儿时候的“快枪手”,谁用谁知道,比起你那慢吞吞建项目的流程,它就像——捡了个现成饭盒直接开吃。

file

CLI 是啥玩意,咱整明白

说白了,Spring Boot CLI 就是一套命令行工具,帮你写 Spring Boot 项目快一点,不用写配置、不用写 Maven、直接 run 代码那种快。

只要你能整明白下面这套玩法,你就能:

  • 写 demo 分分钟启动
  • 学习 Spring Boot 不求人
  • 做技术分享懒得建项目直接一把梭
  • 再不济,整人吧,在终端吓唬吓唬实习生也行...

二、装它:安装 Spring Boot CLI(废话多点,不然不像咱说的)

说起安装这个玩意,真是个坑头,这年头连个 CLI 工具都能把人搞冒烟,我最开始也是一顿乱敲,好家伙,敲完还以为是我网卡了...

1. 用 SDKMAN 装(推荐,像话)

这玩意就像 Java 工具界的“包工头”,谁都能给你整一套。

安装 SDKMAN:

curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"

你要问这是干啥的?咱直白点说:这是在你机器里埋颗“雷”,让它帮你自动拉 CLI 的活儿。

安装 Spring Boot CLI:

sdk install springboot

完事你试下:

spring --version

如果你看到个版本号蹦出来,比如:

Spring Boot v3.2.5

那就说明——成了,踩雷成功!

三、验证:Hello CLI!(上代码!别说我懒)

这块就来点狠的,咱直接写个“Hello Spring Boot CLI”,终端跑起来。

建个文件,随便命个名,比如 hello.groovy

@RestController // Spring 的注解:标明这是个 Rest 控制器
class HelloController {

    @RequestMapping("/") // 请求路径:根目录
    String hello() {
        return "春哥好,Boot CLI 我来了!"
    }
}

然后命令行跑它:

spring run hello.groovy

就这么一个命令!对,就一行,你那复杂的 Boot 项目那堆配置,在 CLI 里就是个屁。

你打开浏览器,访问:

http://localhost:8080/

能看到:

春哥好,Boot CLI 我来了!

说明你这 CLI 跑起来了!是不是有点意思了?

四、CLI 也能跑多文件?别不信,真能整!

有一说一啊,刚开始我也以为 CLI 就只能跑一个 groovy 文件,后来看了官方文档我直接一个大写的“服”字——

一句话总结:

CLI 不光能跑多个 .groovy 文件,还能像你熟的 Controller + Service + Model 分层那样跑起来!

来,整一套小 demo,模拟个小业务:用户登录

文件1:User.groovy

class User {
    String username
    String password
}

👆 这就是咱的模型类,别嫌简单,CLI 项目就图快,不图全。

文件2:UserService.groovy

@Service // Spring 注解,表示这是个服务类
class UserService {

    boolean login(User user) {
        // 模拟下业务逻辑
        return user.username == "admin" && user.password == "123456"
    }
}

👆 这玩意就是干活的,检查用户名密码,逻辑简单但架子得有。

文件3:LoginController.groovy

@RestController
class LoginController {

    @Autowired
    UserService userService

    @PostMapping("/login")
    String login(@RequestBody User user) {
        if (userService.login(user)) {
            return "登录成功,进来坐会儿~"
        }
        return "登录失败,账号密码瞅准点输!"
    }
}

👆 控制器来了,和你平时用的 Spring Boot 项目一毛一样。

怎么跑?直接撸:

spring run User.groovy UserService.groovy LoginController.groovy

你看,是不是连构建都不用了?IDEA 都不用打开,直接终端开干!

测试接口(用 curl 模拟 POST 请求):

curl -X POST http://localhost:8080/login 
-H "Content-Type: application/json" 
-d '{"username":"admin","password":"123456"}'

返回啥?

登录成功,进来坐会儿~

你要是改成错的账号密码,提示就变:

登录失败,账号密码瞅准点输!

看到没?CLI 虽说是个命令行工具,架不住它 Spring 那一整套注解照样都认,@RestController@Service@Autowired 通通生效!

CLI 跑小项目,真就跟玩一样,适合做演示、讲课、写 demo,再合适不过!

五、CLI 引入外部依赖?没错,CLI 也能像 Maven 那样搞!

你要是以为 CLI 就只能跑“本地那一丢丢小文件”,那就大错特错了,Spring Boot CLI 支持自动拉 Spring Boot Starters 和第三方 jar 包,关键它还能走 Groovy 的 Grape 机制,懂行的都知道这玩意灵。

来,咱搞个最经典的:接个 RestTemplate,用 CLI 请求第三方 API

你没听错,不用建 Maven 项目,不用配置 pom,CLI 直接就能拉!

HttpClientDemo.groovy

@Grab('org.springframework.boot:spring-boot-starter-web') // 拉 Spring Boot Web 包
@RestController
class HttpClientDemo {

    @GetMapping("/weather")
    String getWeather() {
        // 创建 RestTemplate 对象
        RestTemplate restTemplate = new RestTemplate()

        // 请求一个天气接口(这玩意是随便找的免费 API)
        String url = "https://api.uomg.com/api/rand.qinghua?format=json"

        // 发 GET 请求
        def result = restTemplate.getForObject(url, String)

        // 返回结果
        return "查完了,结果如下:n" + result
    }
}

重点来了兄弟,这里有几个“骚点”你得记住:

  • @Grab(...) 是 Groovy 的神器,能在运行时自动下载依赖包
  • 你 CLI 项目可以没 pom,但照样能拉 Spring Boot 的 Starter
  • RestTemplateWebMvcJackson 你都能直接用,CLI 直接内置!

启动方式:

spring run HttpClientDemo.groovy

打开浏览器访问:

http://localhost:8080/weather

你会看到:

查完了,结果如下:
{"content":"我想变成一棵树,长在你必经的路上。","from":"网易云热评墙"}

看到没?这不是“土味情话 API”嘛,咱拿来打 demo 再合适不过,边学边乐~

总结下这节你得会的:

  • @Grab 加载第三方库(Spring Boot Starter / 外部依赖都行)
  • RestTemplate 发 HTTP 请求,跑起来就是香
  • CLI 项目一样能用注解、注入、Starter,轻量不代表“弱鸡”

六、CLI 也能整定时任务?Spring 家族都传承下来了!

你没听错,@Scheduled 也能用在 CLI 项目里,照样起飞——重点是:你只要加上定时注解,CLI 一样帮你自动注册调度任务!

场景模拟:每5秒报一次“系统心跳”,模拟健康检查

别笑,这玩意我真在测试环境跑过,用来模拟“设备在线状态上报”,效果嘎嘎好用!

SchedulerDemo.groovy

@Grab('org.springframework.boot:spring-boot-starter') // 基础 Starter 包,调度、日志这些全靠它
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter

@Component // 标记为 Spring Bean
class HeartbeatReporter {

    // 定时任务注解,5秒跑一次
    @Scheduled(fixedRate = 5000)
    void report() {
        def now = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
        println "[系统心跳] 当前时间:${now} —— 我还活着呢兄弟~"
    }
}

@Configuration
@EnableScheduling // 重点:启用定时任务功能
class SchedulerConfig {}

解释一哈这些东西干嘛用:

元素 用法
@Scheduled(fixedRate = 5000) 每 5000 毫秒执行一次,别整错成 cron
@EnableScheduling 激活调度功能,不然任务不跑
@Component 定义成 Spring 管理的 Bean
@Grab(...) 拉依赖,CLI 没有 pom 全靠它

启动 CLI 项目:

spring run SchedulerDemo.groovy

你终端每隔 5 秒就能看到类似:

[系统心跳] 当前时间:2025-05-23 13:14:00 —— 我还活着呢兄弟~
[系统心跳] 当前时间:2025-05-23 13:14:05 —— 我还活着呢兄弟~
[系统心跳] 当前时间:2025-05-23 13:14:10 —— 我还活着呢兄弟~

看着就带劲,一种“活系统”的感觉!

小彩蛋一嘴:还能配 cron 表达式,比如:

@Scheduled(cron = "0 0/1 * * * ?") // 每分钟整点跑一次

但 CLI 项目里建议还是用 fixedRatefixedDelay 简洁点,别太重。

七、WebSocket 聊天室,用 CLI 照样整!

想象一下场景:

  • 有人访问网页就能接收消息
  • CLI 后台主动推送消息给客户端
  • 没有 Controller、没有复杂前后端分离,直接“中老年人版”聊天室上线

技术目标:

  • 用 Spring WebSocket + CLI 建一个能收发消息的服务端
  • 不依赖 HTML 页面,直接命令行 curl 模拟客户端收发

第一步:引依赖,用 @Grab

@Grab('org.springframework.boot:spring-boot-starter-websocket')
@Grab('org.springframework.boot:spring-boot-starter-web')

第二步:写个配置类,启动 WebSocket 支持

@Configuration
@EnableWebSocket
class WebSocketConfig implements WebSocketConfigurer {

    @Override
    void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(new MySocketHandler(), "/ws")
    }
}

第三步:自定义 Handler,接收 & 回复消息

class MySocketHandler implements WebSocketHandler {

    @Override
    void afterConnectionEstablished(WebSocketSession session) {
        println "有客户端连接啦: ${session.id}"
        session.sendMessage(new TextMessage("欢迎欢迎,热烈欢迎~~"))
    }

    @Override
    void handleMessage(WebSocketSession session, WebSocketMessage<?> message) {
        def content = message.getPayload()
        println "收到消息: ${content}"

        // 简单回传
        session.sendMessage(new TextMessage("服务端收到了:${content}"))
    }

    @Override
    void handleTransportError(WebSocketSession session, Throwable exception) {
        println "传输出错:${exception.message}"
    }

    @Override
    void afterConnectionClosed(WebSocketSession session, CloseStatus status) {
        println "客户端断开连接:${session.id}"
    }

    @Override
    boolean supportsPartialMessages() {
        return false
    }
}

启动命令:

spring run WebSocketDemo.groovy

用 WebSocket 客户端工具连接测试:

  • 地址:ws://localhost:8080/ws
  • 发送任何消息,CLI 会原样返回
  • 控制台会输出消息日志,你说它不香?

顺手推荐两个测试工具:

  • Chrome 插件:Simple WebSocket Client
  • Postman 也可以发 WS 请求,支持收发

终极总结:CLI 不只是玩票,它是真能干活!

兄弟,咱从第一个 Hello World,到现在整到 WebSocket,全程 CLI 写的,你说这玩意到底能不能上手干项目?

我来给你复盘一下,咱一共整了这几招:

✅ Hello Controller 快速启动(开篇小试牛刀)

  • .groovy 文件直接写注解跑 Web 项目
  • spring run hello.groovy 秒起服务,适合快速试验逻辑

✅ 多文件组合跑,整出 Controller + Service + Model

  • 分文件模拟标准分层架构
  • 一把梭把整个“小系统”跑起来,不比传统 Spring Boot 差

@Grab 引入外部依赖,整合 RestTemplate

  • CLI 不靠 Maven 也能拉 Starter,干净、快
  • RestTemplate 拉 API 像玩一样,适合做 API 调用演示

@Scheduled 弄定时任务,后台定期执行逻辑

  • CLI 支持全套注解调度
  • 每几秒打印日志模拟系统心跳,测试后台逻辑的利器

✅ WebSocket 聊天室,CLI 搞实时通信也不虚

  • CLI 项目也能起 WS 服务
  • 接收消息、推送消息一条龙搞定

干货小建议:

你还在打开 IDEA 费半天劲建项目,建完又不想写?

那说明你该试试 Spring Boot CLI 啦!

CLI 虽然轻、简单、没那么多“花架子”,但它能干的事儿可真不少:

  • 快速验证代码逻辑
  • API 接口调试
  • 技术演示 & 讲课
  • Shell 脚本集成自动化服务
  • 测试环境 demo 快速部署

要我说,Spring Boot CLI 是你桌边小刀,不是万能,但谁用谁真香

未经允许不得转载:搜云库 » Spring Boot CLI 教程详解:快速运行项目、加载依赖、构建轻量服务

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们