Spring Boot在Windows开机自启动

把 Spring Boot 的 jar 在 Windows 开机时自动启动,有几种常用且可靠的方法。

按从简单到专业排序:任务计划(Task Scheduler)把 jar 注册为 Windows 服务(推荐用 NSSM 或 winsw) 、以及直接用 sc create。下面给出每种方法的步骤、示例命令和注意事项。

只需把示例中的 java 路径和 C:\path\to\app.jar 替换成你自己的路径即可。

1) 最简单:使用「任务计划程序」(开机/登录时启动)

适合快速部署、调试。优点:不需要额外工具;缺点:不是严格的服务管理(重启/崩溃自动恢复能力弱)。

  1. 在记事本建一个启动脚本 start-app.bat
bat 复制代码
@echo off
cd /d "C:\path\to"
REM 可加 JVM 参数:-Xms256m -Xmx1g
"C:\Program Files\Java\jdk-17\bin\java.exe" -jar "C:\path\to\app.jar" >> "C:\path\to\logs\app.log" 2>&1
  1. 打开「任务计划程序」→ 右侧「创建任务」:

    • 常规:勾选"使用最高权限运行",配置为"无论用户是否登录都运行"。
    • 触发器:新建 → "在计算机启动时"。
    • 操作:新建 → 程序/脚本 指向 start-app.bat(或直接指定 java.exe 并把参数写入"添加参数")。
    • 条件/设置:取消勾选"只有在计算机使用交流电源供电时",勾选"如果任务失败,则重新启动每 X 分钟"。
  2. 保存后可以在任务计划程序里右键运行测试,重启机器验证。

2) 推荐:把 jar 注册为 Windows 服务(使用 NSSM 或 winsw)

把应用做成真正的 Windows Service,优点:随系统启动、在服务管理里可自动重启、能设置日志、恢复策略。NSSM(Non-Sucking Service Manager)和 winsw 都很好用;下面以 NSSM 为例(操作简洁、功能强)。

使用 NSSM(步骤)

  1. 下载 NSSM(把 nssm.exe 放在 C:\nssm\nssm.exe 或放到 PATH)。
  2. 安装服务(命令行):
powershell 复制代码
# 打开管理员 PowerShell 或 cmd
C:\nssm\nssm.exe install MySpringApp
# 这会弹出 GUI,也可以用命令行方式:
C:\nssm\nssm.exe install MySpringApp "C:\Program Files\Java\jdk-17\bin\java.exe" "-jar C:\path\to\app.jar --spring.profiles.active=prod"
  1. 配置(或用 GUI):

    • Application → Path: C:\Program Files\Java\jdk-17\bin\java.exe
    • Arguments: -jar "C:\path\to\app.jar" --spring.profiles.active=prod
    • Startup directory: C:\path\to
    • I/O → stdout/stderr 路径写入日志文件(方便查看)
  2. 启动服务并设置为自动:

powershell 复制代码
nssm.exe start MySpringApp
# 或通过服务管理器设置"启动类型"为"自动"
  1. 管理:可以用 services.mscnet start MySpringAppnet stop MySpringAppnssm 命令控制。

NSSM 的好处:服务崩溃可设置自动重启、支持输出重定向、环境变量支持好。

winsw(另一种可选)

winsw 使用一个 xml 配置文件包装 exe,也常用于 Java 程序。流程类似:生成 MyService.exe(winsw 工具)并把 xml 指向 java.exe + jar,然后安装为服务。

3) 直接用 sc create(不常推荐)

sc create 可以把可执行当服务注册,但命令行参数的细节与权限可能比较麻烦,且管理崩溃恢复不及 NSSM。示例(注意引号):

powershell 复制代码
sc create MySpringApp binPath= "\"C:\Program Files\Java\jdk-17\bin\java.exe\" -jar \"C:\path\to\app.jar\"" start= auto
sc description MySpringApp "Spring Boot app"
net start MySpringApp

(若失败或服务不能正常停止/重启,建议改用 NSSM。)

常见注意事项与技巧

  • Java 路径:务必使用绝对路径(不要依赖 PATH 环境变量),且确保服务用户有权限访问 JRE/JDK 和 jar 文件。
  • 工作目录:很多 Spring Boot 程序会相对路径读取文件,确保 Startup directory 指向 jar 所在目录或配置 --spring.config.location
  • 日志:通过 NSSM 或脚本把 stdout/stderr 重定向到文件,方便排查。
  • 端口/防火墙:若服务器有防火墙,确保应用使用的端口已放行。
  • JVM 参数:生产常加 -Xms -Xmx -XX:+UseG1GC 等,根据需要调整。
  • 服务用户:若需要访问网络/磁盘/数据库,选择合适的运行账户(Local System 与具名服务账号差异)。
  • 自动重启:在服务管理器中设置恢复策略(第一次失败后重启等),NSSM 也有设置项。
  • 卸载服务:NSSM nssm remove MySpringApp confirm,sc sc delete MySpringApp

快速示例

任务计划(PowerShell 注册任务示例):

powershell 复制代码
$action = New-ScheduledTaskAction -Execute "C:\Windows\System32\cmd.exe" -Argument "/c `""C:\path\to\start-app.bat`""
$trigger = New-ScheduledTaskTrigger -AtStartup
Register-ScheduledTask -TaskName "StartMySpringApp" -Action $action -Trigger $trigger -RunLevel Highest -User "SYSTEM"

NSSM 命令行示例(替换路径后运行管理员 cmd):

cmd 复制代码
C:\nssm\nssm.exe install MySpringApp "C:\Program Files\Java\jdk-17\bin\java.exe" "-jar C:\path\to\app.jar --spring.profiles.active=prod"
C:\nssm\nssm.exe set MySpringApp AppDirectory "C:\path\to"
C:\nssm\nssm.exe set MySpringApp AppStdout "C:\path\to\logs\stdout.log"
C:\nssm\nssm.exe start MySpringApp

相关推荐
love530love6 小时前
LiveTalking 数字人项目 Windows 部署完全指南(EPGF 架构)
人工智能·windows·python·架构·livetalking·epgf
星辰徐哥6 小时前
Spring Boot 微服务架构设计与实现
spring boot·后端·微服务
星辰徐哥7 小时前
Spring Boot 数据导入导出与报表生成
spring boot·后端·ui
明夜之约7 小时前
Spring Boot 自动装配源码
java·spring boot·后端
Leaton Lee7 小时前
Spring Boot分层架构详解:从Controller到Service再到Mapper的完整流程
java·spring boot·后端·架构
Micro麦可乐7 小时前
Spring Boot 实战:从零设计一个短链系统(含完整代码与数据库设计)
数据库·spring boot·后端·哈希算法·雪花算法·短链系统
Jinkxs7 小时前
Resilience4j- 与 Spring Boot 快速集成:自动配置与基础注解使用
java·spring boot·后端
毕设源码_郑学姐7 小时前
计算机毕业设计springboot网络相册设计与实现 基于Spring Boot框架的在线相册管理系统开发与应用 Spring Boot驱动的网络影集设计与实践
spring boot·后端·课程设计
辣机小司7 小时前
【踩坑记录:Spring Boot 配置文件读取值不一致?警惕 YAML 的“八进制陷阱”与 SnakeYAML 版本之谜】
java·spring boot·后端·yaml·踩坑记录
一条小锦吕*7 小时前
基于Spring Boot + 数据可视化 + 协同过滤算法的推荐系统设计与实现(源码+论文+部署全讲解)
spring boot·算法·信息可视化