SSH框架升级为SpringBoot

前言和准备

公司系统使用框架为SSH(Spring + Spring MVC + Hibernate),现在要求升级为SpringBoot。

原项目:Spring 3.1.3 + Hibernate 4.2.21 使用jar包方式

准备升级为:SpringBoot2.7.6 + 使用mavne管理jar包

Spring Boot 2.x需要Spring 5和Hibernate 5.2+,因此我们需要升级这些依赖。

步骤

1. 创建Spring Boot项目

使用阿里云地址 https://start.aliyun.com/ 来创建一个新的Spring Boot 项目。选择 JDK8、Maven、Spring Boot 版本2.7.6。

目录结构为:

image-20250605142847636

2. jar包用maven替换

将原项目src下的目录复制到新建的项目中。先运行一下@SpringBootApplication 类,根据报错去添加相关依赖。没有去网站[Maven Repository: Search/Browse/Explore (mvnrepository.com)](https://mvnrepository.com/)下载依赖。

1. 集成log4j

Spring Boot 已弃用 spring-boot-starter-log4j:
Spring Boot 从 1.2.x 版本开始,官方推荐使用 Logback 或 Log4j2,不再支持旧版的 Log4j 1.x。
因此,spring-boot-starter-log4j 在较新的 Spring Boot 版本中已被移除。

因为之前系统使用log4j,为了不用改配置和代码,确定继续使用log4j。下载好依赖后导入 pom.xml 文件中。

1
2
3
4
5
6
<!--添加log4j依赖模块-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>

2. 集成Hibernate

原系统使用的 hibernate 版本 4.2.21。

  1. 导入依赖
1
2
3
4
5
<!-- 只需添加 JPA Starter Spring Boot 会自动引入兼容的 Hibernate 版本(无需手动指定)-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

spring-boot-starter-data-jpa 已集成 Hibernate 核心依赖,无需单独引入 hibernate-core 等包。

  1. 配置文件

以前需要在application-context.xml 文件中配置

image-20250605140715306

现在只需要在application.yaml 文件中配置即可。

image-20250605141925706

3. 前端代码移植

  • 原系统使用JSP,需要将原项目WebContent 目录下的文件复制到,webapp 目录下。

    • 原系统:

    image-20250610180417112

    • 现在系统:

    image-20250610180521544

  • 配置视图解析器

1
2
3
4
5
6
7
mvc:
view:
prefix: /WEB-INF/jsp/ #配置视图解析器
suffix: .jsp
web:
resources:
static-locations: classpath:/static/,classpath:/WEB-INF/userData/,classpath:/WEB-INF/temp/ #设置静态资源路径
  • 引入依赖

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <!--SpringBoot不推荐使用jsp  加入一个处理jsp的依赖。 负责编译jsp文件-->
    <dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    </dependency>
    <!--jstl 依赖-->
    <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    </dependency>