Spring Boot 项目启动命令大全:参数详解与高阶用法
一、基础启动命令
-
默认启动命令
java -jar xxx.jar
- 适用场景:开发环境快速启动,使用默认配置(端口 8080,内存由 JVM 自动分配)。
-
指定 JVM 内存参数
java -Xms256m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -jar xxx.jar
- 参数解析:
-Xms256m
:初始堆内存(推荐与-Xmx
设置相同,避免内存震荡)-Xmx512m
:最大堆内存-XX:MetaspaceSize=128m
:元空间初始大小(JDK8+ 替代 PermGen)-XX:MaxMetaspaceSize=256m
:元空间最大大小
- 参数解析:
-
指定服务端口
java -jar xxx.jar --server.port=8085
- 注意事项:
- 若端口被占用会抛出
BindException
- 支持范围:1~65535(避免使用 0-1023 的保留端口)
- 若端口被占用会抛出
- 注意事项:
-
指定配置文件环境
java -jar xxx.jar --spring.profiles.active=pro
- 配置优先级:命令行参数 >
application-{profile}.yml
>application.yml
- 多环境激活:
--spring.profiles.active=pro,mysql
(逗号分隔)
- 配置优先级:命令行参数 >
-
指定运行编码
java -jar -Dfile.encoding="UTF-8" xxx.jar
- 常见问题:日志乱码、文件读取编码不一致时需显式指定
二、高阶启动参数
-
远程调试模式
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar xxx.jar
- 用途:通过 IDE(如 IntelliJ)远程调试生产环境应用
- 参数说明:
suspend=y
:阻塞等待调试器连接(生产环境慎用)address=5005
:调试端口
-
日志配置
java -jar xxx.jar --logging.file.path=/var/log/myapp --logging.level.root=WARN
- 关键参数:
logging.config
:指定自定义日志配置文件(如 Logback)logging.level.com.example=DEBUG
:包级别日志控制
- 关键参数:
-
GC 调优参数
java -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -Xloggc:/var/log/gc.log -jar xxx.jar
- 推荐策略:
- G1 GC:
-XX:+UseG1GC
(适用于大内存应用) - ZGC:
-XX:+UseZGC
(JDK11+,低延迟场景)
- G1 GC:
- 推荐策略:
-
禁用特定功能
java -jar xxx.jar --spring.main.web-application-type=none --spring.devtools.restart.enabled=false
- 常用场景:
- 非 Web 应用:禁用 Tomcat
- 生产环境:关闭 DevTools 热部署
- 常用场景:
三、生产环境实战命令
综合示例:
java \
-Xms2g -Xmx2g \
-XX:+UseG1GC \
-XX:MaxGCPauseMillis=200 \
-Dfile.encoding=UTF-8 \
-Dspring.profiles.active=pro \
--server.port=8080 \
--logging.file.path=/data/logs \
--spring.redis.host=10.0.0.1 \
-jar myapp.jar
参数说明:
- 堆内存固定为 2GB,避免动态扩展
- 使用 G1 垃圾回收器,目标暂停时间 200ms
- 显式指定 UTF-8 编码
- 激活生产环境配置
- 自定义日志存储路径
- 覆盖 Redis 连接配置
四、注意事项
-
参数顺序问题:
- JVM 参数(
-X
、-D
)必须放在-jar
之前 - Spring 参数(
--
)放在最后
- JVM 参数(
-
配置优先级:
命令行参数 > System 属性 > 环境变量 > application-{profile}.yml > application.yml
-
安全建议:
- 生产环境禁用 Actuator 敏感端点:
--management.endpoints.web.exposure.exclude=env,health
- 禁用命令行窃听:
--spring.main.allow-bean-definition-overriding=false
- 生产环境禁用 Actuator 敏感端点:
五、扩展知识
-
Docker 环境启动:
docker run -d -p 8080:8080 \ -e "JAVA_OPTS=-Xmx512m" \ -v /app/config:/config \ myimage:latest \ java -jar /app/myapp.jar --spring.config.location=/config/
-
性能监控集成:
java -jar xxx.jar \ --management.endpoint.health.show-details=always \ --management.metrics.export.prometheus.enabled=true
通过灵活组合这些参数,开发者可以精准控制 Spring Boot 应用的运行时行为。建议根据实际场景进行压测验证,并配合 APM 工具(如 SkyWalking、Prometheus)持续优化。