Spring Boot 项目启动命令大全:参数详解与高阶用法

Spring Boot 项目启动命令大全:参数详解与高阶用法


一、基础启动命令
  1. 默认启动命令

    java -jar xxx.jar
    
    • 适用场景:开发环境快速启动,使用默认配置(端口 8080,内存由 JVM 自动分配)。
  2. 指定 JVM 内存参数

    java -Xms256m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -jar xxx.jar
    
    • 参数解析
      • -Xms256m:初始堆内存(推荐与 -Xmx 设置相同,避免内存震荡)
      • -Xmx512m:最大堆内存
      • -XX:MetaspaceSize=128m:元空间初始大小(JDK8+ 替代 PermGen)
      • -XX:MaxMetaspaceSize=256m:元空间最大大小
  3. 指定服务端口

    java -jar xxx.jar --server.port=8085
    
    • 注意事项
      • 若端口被占用会抛出 BindException
      • 支持范围:1~65535(避免使用 0-1023 的保留端口)
  4. 指定配置文件环境

    java -jar xxx.jar --spring.profiles.active=pro
    
    • 配置优先级:命令行参数 > application-{profile}.yml > application.yml
    • 多环境激活--spring.profiles.active=pro,mysql(逗号分隔)
  5. 指定运行编码

    java -jar -Dfile.encoding="UTF-8" xxx.jar
    
    • 常见问题:日志乱码、文件读取编码不一致时需显式指定

二、高阶启动参数
  1. 远程调试模式

    java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar xxx.jar
    
    • 用途:通过 IDE(如 IntelliJ)远程调试生产环境应用
    • 参数说明
      • suspend=y:阻塞等待调试器连接(生产环境慎用)
      • address=5005:调试端口
  2. 日志配置

    java -jar xxx.jar --logging.file.path=/var/log/myapp --logging.level.root=WARN
    
    • 关键参数
      • logging.config:指定自定义日志配置文件(如 Logback)
      • logging.level.com.example=DEBUG:包级别日志控制
  3. GC 调优参数

    java -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -Xloggc:/var/log/gc.log -jar xxx.jar
    
    • 推荐策略
      • G1 GC:-XX:+UseG1GC(适用于大内存应用)
      • ZGC:-XX:+UseZGC(JDK11+,低延迟场景)
  4. 禁用特定功能

    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 连接配置

四、注意事项
  1. 参数顺序问题

    • JVM 参数(-X-D)必须放在 -jar 之前
    • Spring 参数(--)放在最后
  2. 配置优先级

    命令行参数 > System 属性 > 环境变量 > application-{profile}.yml > application.yml
    
  3. 安全建议

    • 生产环境禁用 Actuator 敏感端点:
      --management.endpoints.web.exposure.exclude=env,health
      
    • 禁用命令行窃听:
      --spring.main.allow-bean-definition-overriding=false
      

五、扩展知识
  1. 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/
    
  2. 性能监控集成

    java -jar xxx.jar \
    --management.endpoint.health.show-details=always \
    --management.metrics.export.prometheus.enabled=true
    

通过灵活组合这些参数,开发者可以精准控制 Spring Boot 应用的运行时行为。建议根据实际场景进行压测验证,并配合 APM 工具(如 SkyWalking、Prometheus)持续优化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/977427.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Hadoop初体验

一、HDFS初体验 1. shell命令操作 hadoop fs -mkdir /itcast hadoop fs -put zookeeper.out /itcast hadoop fs -ls / 2. Web UI页面操作 结论: HDFS本质就是一个文件系统有目录树结构 和Linux类似,分文件、文件夹为什么上传一个小文件也这…

机器学习基础入门——机器学习库介绍(NumPy、pandas、Matplotlib)

机器学习库介绍(NumPy、pandas、Matplotlib) 在 Python 机器学习的领域中,NumPy、pandas 和 Matplotlib 是三个不可或缺的基础库。它们分别在数值计算、数据处理与分析以及数据可视化方面发挥着关键作用,极大地提升了开发效率与数…

Redis——用户签到BitMap,UV统计

目录 BitMap 使用场景 1. 用户签到系统 2. 用户行为标记 3. 布隆过滤器(Bloom Filter) BitMap介绍 Redis中的使用 Redis功能示例 添加: 获取: 批量获取: java中实现 统计本月连续签到次数 UV统计 UV 统计…

【数据结构】(12) 反射、枚举、lambda 表达式

一、反射 1、反射机制定义及作用 反射是允许程序在运行时检查和操作类、方法、属性等的机制,能够动态地获取信息、调用方法等。换句话说,在编写程序时,不需要知道要操作的类的具体信息,而是在程序运行时获取和使用。 2、反射机制…

【初探数据结构】时间复杂度和空间复杂度

💬 欢迎讨论:在阅读过程中有任何疑问,欢迎在评论区留言,我们一起交流学习! 👍 点赞、收藏与分享:如果你觉得这篇文章对你有帮助,记得点赞、收藏,并分享给更多对数据结构感…

基于 MySQL 递归 CTE 实现表,父级id与子级id拼接

1、函数 xr_test.tb_content替换成自己的表 CREATE DEFINERroot% FUNCTION get_related_ids(start_id BIGINT) RETURNS varchar(1000) CHARSET utf8mb4 COLLATE utf8mb4_general_ciDETERMINISTIC BEGINDECLARE result_ids VARCHAR(1000);-- 使用递归 CTE 查找所有相关的 idWI…

Redission可重试、超时续约的实现原理(源码分析)

Redission遇到其他进程已经占用资源的时候会在指定时间waitTime内进行重试。实现过程如下: 执行获取锁的lua脚本时,会返回一个值, 如果获取锁成功,返回nil,也就是java里的null 如果获取锁失败,用语句“PT…

ue----git局域网内部署裸仓库,别的机器进行访问

最近由于经常迁移项目到另一台机器上进行部署更新一点就要整个迁移 弄得麻烦了 就在网上学了一下这个方式 首先我们在想要建立裸仓库的电脑上找到一个文件夹放置我们的裸仓库 在此点击鼠标右键选择 open git bash here 输入命令 创裸仓库 git init --bare gitTestName.git…

输入搜索、分组展示选项、下拉选取,el-select 实现:即输入关键字检索,返回分组选项,选取跳转到相应内容页 —— VUE 项目-全局模糊检索

后端数据代码写于下一篇:输入搜索、分组展示选项、下拉选取,全局跳转页,el-select 实现 —— 后端数据处理代码,抛砖引玉展思路 【效果图】:分组展示选项 >【提供界面操作体验】 【录制效果视频展示】&#xff1a…

【UCB CS 61B SP24】Lecture 11 - Inheritance 4: Iterators, Object Methods学习笔记

本文内容为集合(Set)的介绍与使用,并通过数组手动实现集合,接着介绍了迭代器,使用迭代器我们能够更方便地遍历集合中的元素。 1. Set 1.1 Set介绍与Java实现类的使用 集合(Set)是一种常见的数…

玩机日记 12 fnOS使用lucky反代https转发到外网提供服务

目录 1、安装lucky 2、更新lucky 3、上传ssl证书 4、设置安全入口,替换fnOS的应用url 5、添加https反代 这一篇主要是解决一下飞牛反代https的问题。可以先看玩机日记 12.5 在PVE Windows11上部署本地AI模型,使用群晖反代https转发到外网提供服务&a…

神经网络八股(3)

1.什么是梯度消失和梯度爆炸 梯度消失是指梯度在反向传播的过程中逐渐变小,最终趋近于零,这会导致靠前层的神经网络层权重参数更新缓慢,甚至不更新,学习不到有用的特征。 梯度爆炸是指梯度在方向传播过程中逐渐变大,…

【ARM】MDK如何生成指定大小的bin文件,并指定空区域的填充数据

1、 文档目标 解决MDK如何生成指定大小的bin文件,并指定空区域的填充数据 2、 问题场景 客户有这样的需求,客户本身的工程编译生成bin文件后,bin文件大小为200k。整体芯片的内存有512k。客户想要最终生成的bin文件可以达到512k的一个情况&a…

Linux-----进程间通信

一、按通信范围分类 同一主机进程通信 传统IPC方式: 管道(无名管道、有名管道)信号(Signal) System V IPC: 共享内存(效率最高)消息队列信号量 POSIX IPC(较新标准&#…

Part 3 第十二章 单元测试 Unit Testing

概述 第十二章围绕单元测试展开,阐述了单元测试的实践与重要性,通过对比其他测试类型,突出其特点,还介绍了单元测试的最佳实践、避免的反模式以及与测试替身相关的内容,为编写高质量单元测试提供指导。 章节概要 1…

Windows10配置C++版本的Kafka,并进行发布和订阅测试

配置的环境为:Release x64下的环境 完整项目:https://gitee.com/jiajingong/kafka-publisher 1、首先下载相应的库文件(.lib,.dll) 参考链接: GitHub - eStreamSoftware/delphi-kafka GitHub - cloade…

Deepseek引爆AI热潮 防静电地板如何守护数据中心安全

近期,Deepseek的爆火将人工智能推向了新的高度,也引发了人们对AI背后基础设施的关注。作为AI运行的“大脑”,数据中心承载着海量数据的存储、处理和传输,其安全稳定运行至关重要。而在这背后,防静电地板扮演着不可或缺…

Spring框架基本使用(Maven详解)

前言: 当我们创建项目的时候,第一步少不了搭建环境的相关准备工作。 那么如果想让我们的项目做起来方便快捷,应该引入更多的管理工具,帮我们管理。 Maven的出现帮我们大大解决了管理的难题!! Maven&#xf…

QSplashScreen --软件启动前的交互

目录 QSplashScreen 类介绍 使用方式 项目中使用 THPrinterSplashScreen头文件 THPrinterSplashScreen实现代码 使用代码 使用效果 QSplashScreen 类介绍 QSplashScreen 是 Qt 中的一个类,用于显示启动画面。它通常在应用程序启动时显示,以向用户显…

【Vscode 使用】集合1

一、使用make工具管理工程 windows下,下载mingw64,配置好mingw64\bin 为 Win10系统全局变量后。 在mingw64/bin目录下找到mingw32-make.exe工具。复制一份改名为:make.exe,没错,就是那么简单,mingw64自带m…