在Windows 操作系统中多个springboot项目怎么依赖部署
- 工作小总结&小工具类
- 时间:2025-07-15 13:48
- 46人已阅读
🔔🔔好消息!好消息!🔔🔔
有需要的朋友👉:微信号
描述:
我的spring boot项目依赖于其他服务,比如mysql,redis还有一个exe程序,只有当这些启动后,才可以启动spring boot项目 使用上面两个方案怎么实现?我同时还要部署多个spring boot 项目,启动顺序:xxl-job>collect>admin 这样的顺序。因为我是spring boot项目,想要配置成项目开机自启切依赖关系如我设置的。应该怎么实现?
多Spring Boot项目依赖管理与启动顺序配置方案
根据您的需求,需要确保多个Spring Boot项目(xxl-job > collect > admin)按顺序启动,同时这些项目还依赖于MySQL、Redis和一个exe程序的启动。以下是两种完整解决方案:
方案一:使用WinSW注册为Windows服务(推荐生产环境)
1. 准备工作
下载WinSW.NET4.exe并重命名为与项目相关的名称(如
xxl-job.exe
、collect.exe
、admin.exe
)确保MySQL和Redis已安装为Windows服务
将exe程序注册为Windows服务(可使用NSSM工具)
2. 配置各项目服务文件
xxl-job服务配置(xxl-job.xml):
<service>
<id>xxl-job</id>
<name>XXL-JOB Service</name>
<description>XXL-JOB任务调度服务</description>
<executable>java</executable>
<arguments>-jar xxl-job-admin.jar</arguments>
<startmode>Automatic</startmode>
<depend>MySQL57</depend>
<depend>Redis</depend>
<depend>MyExeService</depend>
</service>
collect服务配置(collect.xml):
<service>
<id>collect</id>
<name>Collect Service</name>
<description>数据采集服务</description>
<executable>java</executable>
<arguments>-jar collect-service.jar</arguments>
<startmode>Automatic</startmode>
<depend>xxl-job</depend>
</service>
admin服务配置(admin.xml):
<service>
<id>admin</id>
<name>Admin Service</name>
<description>后台管理服务</description>
<executable>java</executable>
<arguments>-jar admin-service.jar</arguments>
<startmode>Automatic</startmode>
<depend>collect</depend>
</service>
3. 安装并配置服务
1.为每个项目安装服务:
xxl-job.exe install
collect.exe install
admin.exe install
2.验证服务依赖关系:
sc config "collect" depend= "xxl-job"
sc config "admin" depend= "collect"
在服务管理器中确认依赖关系已正确设置
方案二:使用Bat脚本实现顺序启动(适合开发环境)
1. 创建主启动脚本(start_all.bat)
@echo off REM 启动MySQL服务 echo Starting MySQL service... net start MySQL57 ping -n 10 127.0.0.1 >nul REM 启动Redis服务 echo Starting Redis service... net start Redis ping -n 10 127.0.0.1 >nul REM 启动exe程序 echo Starting MyExeProgram... start "" "C:\path\to\myprogram.exe" ping -n 15 127.0.0.1 >nul REM 检查依赖是否就绪 :check_dependencies tasklist | find /i "mysqld.exe" >nul if %errorlevel% neq 0 goto :wait_mysql tasklist | find /i "redis-server.exe" >nul if %errorlevel% neq 0 goto :wait_redis tasklist | find /i "myprogram.exe" >nul if %errorlevel% neq 0 goto :wait_exe goto start_services :wait_mysql echo Waiting for MySQL to start... ping -n 5 127.0.0.1 >nul goto check_dependencies :wait_redis echo Waiting for Redis to start... ping -n 5 127.0.0.1 >nul goto check_dependencies :wait_exe echo Waiting for MyExeProgram to start... ping -n 5 127.0.0.1 >nul goto check_dependencies REM 启动xxl-job服务 :start_services echo Starting xxl-job service... start "xxl-job" cmd /k java -jar xxl-job-admin.jar ping -n 20 127.0.0.1 >nul REM 检查xxl-job是否启动完成 :check_xxl_job tasklist | find /i "java" | find /i "xxl-job-admin.jar" >nul if %errorlevel% neq 0 ( ping -n 5 127.0.0.1 >nul goto check_xxl_job ) REM 启动collect服务 echo Starting collect service... start "collect" cmd /k java -jar collect-service.jar ping -n 15 127.0.0.1 >nul REM 检查collect是否启动完成 :check_collect tasklist | find /i "java" | find /i "collect-service.jar" >nul if %errorlevel% neq 0 ( ping -n 5 127.0.0.1 >nul goto check_collect ) REM 启动admin服务 echo Starting admin service... start "admin" cmd /k java -jar admin-service.jar echo All services started in correct order. pause
2. 添加脚本到启动项
按Win+R,输入
shell:startup
打开启动文件夹将
start_all.bat
文件复制到该文件夹或者通过组策略(gpedit.msc)添加启动脚本56
方案对比
注意事项
服务名称确认:使用
sc query
命令确认MySQL和Redis服务的实际名称启动延迟设置:根据项目实际启动时间调整ping延迟时间
日志记录:两种方案都应配置日志记录,便于排查启动问题
权限要求:两种方案都需要管理员权限进行初始配置
端口冲突检查:确保各服务配置了不同的端口号,避免冲突
exe程序注册:对于非服务exe程序,建议使用NSSM工具注册为服务