0

0

在Java里开发环境和生产环境有什么区别_Java环境划分说明

P粉602998670

P粉602998670

发布时间:2026-02-05 10:36:11

|

971人浏览过

|

来源于php中文网

原创

Spring Boot环境差异核心在于配置、JVM参数、部署方式三方面:配置需按profile分离且敏感信息加密;生产JVM须调优堆内存与GC策略;部署须显式指定profile并剥离开发依赖。

在java里开发环境和生产环境有什么区别_java环境划分说明

开发环境和生产环境的配置差异最直接体现在 application.propertiesapplication.yml

Java 项目(尤其 Spring Boot)靠 spring.profiles.active 切换环境,比如设为 devprod,对应加载 application-dev.ymlapplication-prod.yml。关键不是“环境名”,而是里面的内容是否匹配场景:

  • spring.datasource.url:开发用 jdbc:h2:mem:testdb 或本地 MySQL;生产必须指向高可用、带连接池、启 SSL 的远程数据库
  • logging.level.root:开发常设 DEBUG,生产严禁,应设为 WARNERROR,避免日志刷爆磁盘
  • management.endpoints.web.exposure.include:开发可开 *,生产必须严格限制,如只留 health,metrics,且需网关鉴权
  • 敏感配置(如数据库密码、API 密钥)绝不能硬编码在 yml 里——开发可用 spring.cloud.config 或本地 bootstrap.yml 模拟;生产必须走 Vault、K8s Secret 或云平台参数管理

JVM 启动参数在生产中必须显式调优,开发通常默认就行

开发时用 IDE 直接运行,JVM 参数基本是默认值(如 -Xmx 可能只有 1G);生产部署必须根据机器资源和压测结果定制:

  • 堆内存:避免用 -Xms-Xmx 差距过大(如 -Xms512m -Xmx4g),易触发频繁 GC;推荐设为相等(-Xms2g -Xmx2g
  • GC 策略:JDK 8 常用 -XX:+UseG1GC;JDK 17+ 可考虑 -XX:+UseZGC,但需确认 OS 支持
  • 禁用 JMX 远程暴露(-Dcom.sun.management.jmxremote)——开发调试可能开着,生产若未隔离网络,等于裸奔
  • 添加 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/myapp/,但路径必须有写权限,否则 dump 失败不报错

打包与部署方式决定环境行为是否可控

开发阶段 jar 包可能带内嵌 Tomcat、H2 数据库、Swagger UI;生产镜像必须剥离这些干扰项:

  • 使用 spring-boot-maven-pluginexcludeDevtoolsexcludeGroupIds 移除 spring-boot-devtools 依赖
  • Dockerfile 中不要 COPY target/*.jar /app.jar 后直接 java -jar,而应通过 java -Dspring.profiles.active=prod -jar app.jar 显式指定 profile
  • 禁止在生产容器中挂载开发用配置文件(如把本地 application-dev.yml 绑定进容器),容易覆盖真实配置
  • K8s 环境下,ConfigMapSecret 应按 namespace 隔离,dev namespace 的 ConfigMap 不能被 prod pod 加载

常见错误:用开发思维查生产问题

线上出问题,第一反应不是改代码,而是确认「当前到底跑的是哪个环境逻辑」:

笔灵AI论文写作
笔灵AI论文写作

免费生成毕业论文、课题论文、千字大纲,几万字专业初稿!

下载

立即学习Java免费学习笔记(深入)”;

  • 看启动日志第一行:The following profiles are active: prod —— 如果显示 dev 或空,说明 profile 没生效或被覆盖
  • 检查 System.getProperty("spring.profiles.active")Environment.getActiveProfiles() 运行时值,别只信配置文件名
  • HTTP 返回头里出现 X-Application-Context: application:dev:8080?说明 Spring MVC 自动加了 dev 标识,生产必须关闭 server.add-application-context=false
  • jps -l + jstat -gc 看真实 JVM 参数,别信部署文档里写的“已调优”

环境差异从来不在名字上,而在每一行配置、每一个启动参数、每一次部署动作里。最容易被忽略的,是不同环境共用同一套 CI 脚本却没做 profile 注入校验——上线前最后一步,永远该是确认 spring.profiles.active 的最终来源。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

669

2023.06.20

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

308

2023.06.21

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

282

2023.07.18

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

517

2023.07.19

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

258

2023.07.25

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

387

2023.08.08

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

535

2023.08.11

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

610

2023.08.14

微信网页版文件传输助手教程合集
微信网页版文件传输助手教程合集

本专题整合了微信网页版文件传输助手教程、入口等等内容,阅读专题下面的文章了解更多详细内容。

15

2026.02.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 2.1万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 823人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号