news 2026/9/2 21:19:45

SpringBoot项目改造注意事项(旧项目框架复用)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SpringBoot项目改造注意事项(旧项目框架复用)

第一章、 项目改造准备工作

1.1 保留:日志,切面、Util、配置等

将旧项目rpm改名为新项目itm,对整个项目的构建配置、包结构、资源文件进行系统性调整。

  • 保留:日志配置(Logback/Log4j2)、切面类(AOP)、业务代码逻辑、数据库配置等核心功能代码。

1.2 备份项目

在动手之前,务必先对原项目做一次完整备份(复杂一份),或者使用 Git 创建分支:这样即使改坏了,也能随时回退。
Git 仓库地址:克隆到新的 git 仓库,不要 push 回旧项目仓库

gitcheckout-brename-rpm-to-itm

2. 修改 Maven 配置(pom.xml)

2.1 修改项目坐标

打开根目录下的pom.xml,找到<project>标签下的基本信息,将rpm改为itm

<!-- 修改前 --><groupId>com.example</groupId><artifactId>rpm</artifactId><version>1.0.0</version><name>rpm</name><description>RPM Project</description><!-- 修改后 --><groupId>com.example</groupId><artifactId>itm</artifactId><version>1.0.0</version><name>itm</name><description>ITM Project</description>

注意artifactId是 Maven 识别项目身份的核心标识,必须修改。namedescription是描述性信息,建议同步修改以保持一致性。

2.2 检查父 POM 和子模块

如果你的项目是多模块结构(有父 POM 和子模块),需要同步修改:

<!-- 父 POM 中的 modules 声明 --><modules><module>itm-core</module><module>itm-web</module><module>itm-service</module></modules>

同时,每个子模块的pom.xml中,<parent>标签里的<artifactId>也要改为新的父项目名称:

<parent><groupId>com.example</groupId><artifactId>itm</artifactId><version>1.0.0</version><relativePath>../pom.xml</relativePath></parent>

2.3 检查依赖引用

如果项目内部模块之间存在相互依赖,也要同步修改:

<!-- 修改前 --><dependency><groupId>com.example</groupId><artifactId>rpm-core</artifactId><version>1.0.0</version></dependency><!-- 修改后 --><dependency><groupId>com.example</groupId><artifactId>itm-core</artifactId><version>1.0.0</version></dependency>

2.4 修改打包配置

如果pom.xml中有<build>配置,检查最终打包文件名:

<build><finalName>itm</finalName><!-- 或 --><finalName>${project.artifactId}</finalName></build>

这样打包出来的 JAR/WAR 文件名就会是itm.jaritm.war

2.5 修改内容:

pom.xml中,除了坐标信息,以下内容也需要同步修改:

<!-- 项目描述信息 --><name>itm</name><description>ITM Project</description><url>https://itm.example.com</url>
  • properties 节点:项目自定义属性(如版本号、编码、镜像仓库地址等),若包含rpm字样需同步替换。
  • plugin 配置maven-jar-pluginfinalNamedocker-maven-plugin的镜像名称等,确保打包产物和镜像名称为itm

3. 修改代码层面

3.1 修改 Java 包名

在 IDEA 中,右键点击根包名(如com.example.rpm),选择Refactor → Rename,将rpm改为itm。IDEA 会自动更新所有引用该包的 Java 文件。

注意:使用 IDEA 的 Refactor 功能而不是手动逐个修改,可以避免遗漏 import 语句。

3.2 修改内容:

代码层面除了包名,以下内容也常包含旧项目名称,需要逐一排查:

// 项目内常量publicstaticfinalStringPROJECT_NAME="itm";publicstaticfinalStringAPP_NAME="itm";// 自定义异常、返回体打印的项目标识// 定时任务、线程池名称前缀threadFactory.setNamePrefix("itm-service-");// RabbitMQ/Kafka 消息队列队列名、topic 名称// Redis key 缓存前缀redisKeyPrefix="itm:";

3.3 检查切面类中的包引用

你的切面类(AOP)中如果有@Pointcut表达式指向具体的包路径,需要同步修改:

// 修改前@Pointcut("execution(* com.example.rpm.service.*.*(..))")// 修改后@Pointcut("execution(* com.example.itm.service.*.*(..))")

3.4 修改内容:

启动类(@SpringBootApplication注解的类)的包名和类名如果包含rpm,也需要修改:

// 修改前packagecom.example.rpm;@SpringBootApplicationpublicclassRpmApplication{publicstaticvoidmain(String[]args){SpringApplication.run(RpmApplication.class,args);}}// 修改后packagecom.example.itm;@SpringBootApplicationpublicclassItmApplication{publicstaticvoidmain(String[]args){SpringApplication.run(ItmApplication.class,args);}}

此外,以下注解中的包路径或名称也容易遗漏,需同步检查:

@ComponentScan("com.example.itm")@MapperScan("com.example.itm.mapper")@ConditionalOnProperty(name="itm.enabled",havingValue="true")@CacheNames("itm:cache")

3.5 怎么修改IDEA左上角项目名称

修改了pom文件和文件路径的项目名字后,IDEA左上角项目名称没有变化。
点击Project Structure
修改project name即可

.idea 文件夹 + xxx.iml 文件能不能删
1、.idea 文件夹
✅ 可以删除,安全,不会损坏你的项目代码
作用:IntelliJ‑IDEA 的本地配置缓存:模块设置、运行配置、索引、IDE 布局等,只存在你电脑,不属于项目源码。
删除后果:
IDE 下次打开项目会重新生成整套 .idea
之前配好的运行参数、SDK、IDE 视图布局丢失
Git 建议:不要提交 .idea,一般加到 .gitignore
2、xxx.iml 文件
✅ 也可以删掉
iml = IDEA 模块配置文件,标记源码根目录、依赖。删掉打开项目后 IDEA 会自动重建。
如果你是 Maven 项目 (pom.xml):
iml、.idea 全部删掉,然后:
IDEA 重新打开文件夹
右键 pom.xml → Add as Maven Project
即可恢复完整项目。

4.配置文件

3.1 修改内容:

检查src/main/resources下的配置文件:

application.yml 或 application.properties

# 修改前spring:application:name:rpmredis:key-prefix:rpm:# 修改后spring:application:name:itmredis:key-prefix:itm:

需要同步修改的配置项包括:

  • 端口号server.port(避免和旧项目冲突)
  • 静态资源、模板文件内写死的项目名称
  • 文件上传下载存储路径
  • nacos 注册中心:命名空间、dataId、group
  • Redis数据库序号、key 统一前缀
  • 数据库:不要连旧项目数据库
  • 定时任务、业务开关配置项
  • 跨域、白名单、业务硬编码 IP
  • actuator监控端点、info 信息

bootstrap.yml(nacos 项目很容易忘记改 bootstrap):

# 修改前spring:application:name:rpm# 修改后spring:application:name:itm

日志路径、日志文件名、logback-spring.xml 或 log4j2.xml

<!-- 修改前 --><propertyname="LOG_FILE"value="./logs/rpm.log"/><!-- 修改后 --><propertyname="LOG_FILE"value="./logs/itm.log"/>

5 外部配置

5.1 修改内容:

外部配置和部署相关文件也需要同步修改,避免遗漏:

# IDEA:重命名根模块,检查 .idea 文件夹(删掉重新导入最稳)# 数据库连接指向全新库,没有共用旧库# Nacos 服务名称不和旧服务重名# Dockerfile:jar 包文件名(对应 pom finalName)# shell 启动脚本 .sh:java -jar itm-xxx.jar# k8s yaml、helm 配置、容器名称、镜像名# Jenkins 流水线脚本
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 21:19:32

【AI大模型进阶】缓存机制设计:相同的问题别问大模型两遍,省钱!

【AI大模型进阶】缓存机制设计:相同的问题别问大模型两遍,省钱! 这是【AI大模型进阶】系列第一百一十二课,聚焦AI应用成本优化与性能提速核心方案,针对大模型重复提问、无效API调用、Token资源浪费、响应延迟过高的行业痛点,从零搭建适配AI对话场景的缓存体系。 通过上…

作者头像 李华
网站建设 2026/9/2 21:13:49

Flutter踩坑 · 转场动画卡顿优化:智能延迟 + 遮罩方案

问题 Flutter 跳转二级页面时,转场动画(~460ms)与 API 请求的同步处理(JSON 解析 setState Widget build)共用 UI 线程。请求响应回来后,同步处理抢占 UI 线程,导致动画丢帧、卡顿。 根因:Dart 是单线程,动画渲染、网络数据处理、Widget build 全在同一条线程上排队。每帧只有…

作者头像 李华
网站建设 2026/9/2 21:09:29

LangGraph 完整核心概念 + 运行流程

LangGraph 完整核心概念概述 LangGraph 是面向 Agent 的状态图编排框架&#xff0c;底层基于 Google Pregel BSP&#xff08;批量同步并行&#xff09;模型&#xff0c;支持循环、分支、多 Agent、断点续跑&#xff1b;和普通 DAG&#xff08;Directed Acyclic Graph&#xff…

作者头像 李华
网站建设 2026/9/2 21:04:08

智能送药小车实战:STM32+树莓派双核架构与二维码识别方案详解

简介&#xff1a;本资源为2021年全国大学生电子设计竞赛F题‘智能送药小车’的完整参赛方案实现包&#xff0c;面向嵌入式系统开发初学者、电赛备赛学生及智能控制方向实践者&#xff0c;聚焦多传感器融合、视觉识别与运动控制等典型工程问题。压缩包共298个文件&#xff0c;含…

作者头像 李华
网站建设 2026/9/2 21:00:42

微信小程序集成科大讯飞语音识别:音频处理与实时流式架构实战

简介&#xff1a;本资源是一套面向微信小程序开发者的科大讯飞语音识别集成实战方案&#xff0c;聚焦解决小程序端语音上传、PCM格式转换、音频降噪提取及实时语音转文字等核心痛点&#xff0c;适用于具备基础JavaScript与小程序开发能力的中初级开发者。压缩包共34个文件&…

作者头像 李华
网站建设 2026/9/2 21:00:25

AI代理在CAD工程中的实测:Claude Fable 5×MecAgent的自动化流程

当我决定认真跑一轮 Claude Fable 5 MecAgent 的 CAD 工程实测时&#xff0c;预期和现在跑完之后的理解完全不同。当时我以为重点会是“AI 自动画图”&#xff0c;结果真正有价值的是另一件事。先从一个常见场景说起&#xff1a;一批图纸要改版本号&#xff0c;一共 47 张&…

作者头像 李华