1. 为什么需要Winsw部署SpringBoot应用
每次用java -jar命令启动SpringBoot应用时,那个熟悉的黑窗口总会弹出来。这个黑窗口不仅影响美观,更重要的是它存在两个致命问题:一是容易被误关闭导致服务中断,二是服务器重启后需要人工重新启动服务。对于需要7x24小时运行的生产环境来说,这简直是噩梦。
我在实际运维中就遇到过这样的情况:运维同事远程连接服务器时不小心关闭了黑窗口,导致线上服务中断了半小时。还有一次机房断电后,服务器重启了但没人记得手动启动Java服务,直到用户投诉才发现问题。这些血泪教训让我意识到,必须找到更稳定的部署方案。
Winsw(Windows Service Wrapper)就是解决这些痛点的利器。它能将任何可执行程序包装成Windows服务,实现后台静默运行、开机自启、服务化管理等功能。相比其他方案,Winsw有三大优势:
- 轻量级:单个exe文件,无需安装复杂环境
- 配置简单:一个XML文件搞定所有参数
- 稳定可靠:微软官方推荐的服务包装方案
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 快速搭建Winsw运行环境
2.1 下载与文件准备
首先从Github获取最新版Winsw,建议选择稳定版本。下载后你会得到两个文件:WinSW.NET4.exe(主程序)和sample-minimal.xml(示例配置)。将它们与你的SpringBoot jar包放在同一目录下,比如我的目录结构是这样的:
code复制H:\myapp\
├── myapp.exe (重命名后的WinSW主程序)
├── myapp.xml (服务配置文件)
└── myapp-1.0.0.jar (SpringBoot应用)
这里有个关键细节:需要将exe和xml文件重命名为相同的服务名称。我习惯使用应用名称+版本号的组合,比如order-service-v2.exe和order-service-v2.xml。这样当服务器上有多个服务时,一眼就能区分。
2.2 Java环境检查
虽然Winsw不依赖Java,但我们的SpringBoot应用需要Java环境。在配置前建议先检查:
bash复制java -version
echo %JAVA_HOME%
如果这些命令报错,说明环境变量
