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

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

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

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

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

1.2 备份项目

在动手之前,务必先对原项目做一次完整备份(复杂一份),或者使用 Git 创建分支:这样即使改坏了,也能随时回退。

Git 仓库地址:克隆到新的 git 仓库,不要 push 回旧项目仓库

bash 复制代码
git checkout -b rename-rpm-to-itm

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

2.1 修改项目坐标

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

xml 复制代码
<!-- 修改前 -->
<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 和子模块),需要同步修改:

xml 复制代码
<!-- 父 POM 中的 modules 声明 -->
<modules>
    <module>itm-core</module>
    <module>itm-web</module>
    <module>itm-service</module>
</modules>

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

xml 复制代码
<parent>
    <groupId>com.example</groupId>
    <artifactId>itm</artifactId>
    <version>1.0.0</version>
    <relativePath>../pom.xml</relativePath>
</parent>

2.3 检查依赖引用

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

xml 复制代码
<!-- 修改前 -->
<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> 配置,检查最终打包文件名:

xml 复制代码
<build>
    <finalName>itm</finalName>
    <!-- 或 -->
    <finalName>${project.artifactId}</finalName>
</build>

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

2.5 修改内容:

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

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 修改内容:

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

java 复制代码
// 项目内常量
public static final String PROJECT_NAME = "itm";
public static final String APP_NAME = "itm";

// 自定义异常、返回体打印的项目标识
// 定时任务、线程池名称前缀
threadFactory.setNamePrefix("itm-service-");

// RabbitMQ/Kafka 消息队列队列名、topic 名称
// Redis key 缓存前缀
redisKeyPrefix = "itm:";

3.3 检查切面类中的包引用

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

java 复制代码
// 修改前
@Pointcut("execution(* com.example.rpm.service.*.*(..))")

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

3.4 修改内容:

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

java 复制代码
// 修改前
package com.example.rpm;

@SpringBootApplication
public class RpmApplication {
    public static void main(String[] args) {
        SpringApplication.run(RpmApplication.class, args);
    }
}

// 修改后
package com.example.itm;

@SpringBootApplication
public class ItmApplication {
    public static void main(String[] args) {
        SpringApplication.run(ItmApplication.class, args);
    }
}

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

java 复制代码
@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

yaml 复制代码
# 修改前
spring:
  application:
    name: rpm
  redis:
    key-prefix: rpm:

# 修改后
spring:
  application:
    name: itm
  redis:
    key-prefix: itm:

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

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

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

yaml 复制代码
# 修改前
spring:
  application:
    name: rpm

# 修改后
spring:
  application:
    name: itm

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

xml 复制代码
<!-- 修改前 -->
<property name="LOG_FILE" value="./logs/rpm.log"/>

<!-- 修改后 -->
<property name="LOG_FILE" value="./logs/itm.log"/>

5 外部配置

5.1 修改内容:

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

bash 复制代码
# IDEA:重命名根模块,检查 .idea 文件夹(删掉重新导入最稳)
# 数据库连接指向全新库,没有共用旧库
# Nacos 服务名称不和旧服务重名
# Dockerfile:jar 包文件名(对应 pom finalName)
# shell 启动脚本 .sh:java -jar itm-xxx.jar
# k8s yaml、helm 配置、容器名称、镜像名
# Jenkins 流水线脚本
相关推荐
花间相见1 小时前
【LangChain组件03】—— LangChain Agents 执行与状态:工作流程与状态管理实战
java·前端·langchain
敲代码的嘎仔1 小时前
28届后端开发-海康威视日常实习一面(已OC)
java·开发语言·后端·面试·海康威视·实习·大厂
IT_陈寒1 小时前
JavaScript数组排序踩的坑,差点让我加班到凌晨
前端·人工智能·后端
接着奏乐接着舞。1 小时前
【2026】73道Redis 常见面试题与参考答案
数据库·redis·后端·缓存
掘金者阿豪2 小时前
Seedance 2.0/2.5 虚拟素材能跨 Key 共用吗?一次讲清 Asset ID、账号隔离与 SaaS 素材架构
前端·后端
程序员黎剑2 小时前
Spring-Bean生命周期-构造器访问Autowired字段为null
java·后端·spring
泡海椒3 小时前
JQuick-Curl 拦截器实战:统一 Token、日志、请求预处理,让第三方接口调用真正工程化
后端
古法安卓3 小时前
Android-重启流程源码解析
android·java·android studio
东方小月3 小时前
一篇文章带你深入拆解Skill的本质与工程实现,让你不再滥用Skill
前端·人工智能·后端