From 4623fca8b017a75827ab6d48252928ee89d48d34 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 14 Sep 2026 13:44:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=87=E7=BA=A7=E5=88=B0=20Spring=20Boot=204?= =?UTF-8?q?.1.1=20=E5=B9=B6=E8=BF=81=E7=A7=BB=20Jackson=203?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 父 POM 3.3.2 -> 4.1.1;spring-boot-starter-web 改名为 webmvc; mybatis-spring-boot-starter(-test) 3.0.3 -> 4.1.0(对标 Boot 4)。 - Jackson 2 -> 3:databind/core 包名改为 tools.jackson.*(注解仍在 com.fasterxml.jackson.annotation,无需改动)。Boot 4 移除了 JsonProcessingException,PersonalController.ip() 实际不抛该异常,去掉声明。 - @ServletComponentScan 迁移到 org.springframework.boot.web.server.servlet.context。 - 顺带修复无 Boot 关联的漏洞:jsoup 1.15.3 -> 1.23.2(CVE-2026-71497)、 commons-io -> 2.22.0(CVE-2024-47554)、lombok 对齐托管版 1.18.46。 - native-maven-plugin 0.10.3 -> 1.1.8(Boot 4.1.1 托管版本)。 注意:原生构建仍需 GraalVM/JDK 25,本次仅验证 JVM 运行。 验证:mvn test 16 项全过;隔离冒烟(真实库副本、独立端口)通过—— Tomcat 11 启动 4.5s、/ 302、/GalleryManage 200、订阅分发 /sub/v2|cat 字节数与 3.x 一致、WebSocket 升级 101、@ServletComponentScan 过滤器生效、 与 storageNode 的 Jackson 2.15.2 线上格式双向兼容。 --- pom.xml | 18 +++++++++--------- .../Controller/PersonalController.java | 3 +-- .../lionwebsite/LionWebsiteApplication.java | 2 +- .../lion/lionwebsite/Message/MessageCodec.java | 2 +- .../Service/GalleryManageService.java | 2 +- .../lionwebsite/Service/PersonalService.java | 2 +- .../lion/lionwebsite/Service/QueryService.java | 2 +- .../SubscriptionStandbySnapshotService.java | 2 +- .../lion/lionwebsite/Service/UserService.java | 2 +- .../lionwebsite/Service/WebSocketService.java | 4 ++-- .../com/lion/lionwebsite/Util/CustomUtil.java | 2 +- .../com/lion/lionwebsite/Util/GalleryUtil.java | 2 +- .../com/lion/lionwebsite/Util/Response.java | 4 ++-- 13 files changed, 23 insertions(+), 24 deletions(-) diff --git a/pom.xml b/pom.xml index ec4a592..0547115 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.boot spring-boot-starter-parent - 3.3.2 + 4.1.1 com.lion @@ -19,18 +19,18 @@ org.springframework.boot - spring-boot-starter-web + spring-boot-starter-webmvc org.mybatis.spring.boot mybatis-spring-boot-starter - 3.0.3 + 4.1.0 org.projectlombok lombok - 1.18.40 + 1.18.46 true @@ -41,14 +41,14 @@ org.mybatis.spring.boot mybatis-spring-boot-starter-test - 3.0.3 + 4.1.0 test org.jsoup jsoup - 1.15.3 + 1.23.2 @@ -88,7 +88,7 @@ commons-io commons-io - 2.15.1 + 2.22.0 @@ -118,7 +118,7 @@ org.projectlombok lombok - 1.18.40 + 1.18.46 @@ -126,7 +126,7 @@ org.graalvm.buildtools native-maven-plugin - 0.10.3 + 1.1.8 lionwebsite diff --git a/src/main/java/com/lion/lionwebsite/Controller/PersonalController.java b/src/main/java/com/lion/lionwebsite/Controller/PersonalController.java index bc35bb8..c4dce4b 100644 --- a/src/main/java/com/lion/lionwebsite/Controller/PersonalController.java +++ b/src/main/java/com/lion/lionwebsite/Controller/PersonalController.java @@ -3,7 +3,6 @@ package com.lion.lionwebsite.Controller; import com.lion.lionwebsite.Service.LocalService; import com.lion.lionwebsite.Service.PersonalService; import com.lion.lionwebsite.Util.Response; -import com.fasterxml.jackson.core.JsonProcessingException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; @@ -88,7 +87,7 @@ public class PersonalController { } @GetMapping("/ip") - public String ip() throws JsonProcessingException { + public String ip() { return personalService.getIp(); } diff --git a/src/main/java/com/lion/lionwebsite/LionWebsiteApplication.java b/src/main/java/com/lion/lionwebsite/LionWebsiteApplication.java index 72d7dbc..a2bdb35 100644 --- a/src/main/java/com/lion/lionwebsite/LionWebsiteApplication.java +++ b/src/main/java/com/lion/lionwebsite/LionWebsiteApplication.java @@ -5,7 +5,7 @@ import org.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.annotation.MapperScans; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.web.servlet.ServletComponentScan; +import org.springframework.boot.web.server.servlet.context.ServletComponentScan; import org.springframework.scheduling.annotation.EnableScheduling; @SpringBootApplication diff --git a/src/main/java/com/lion/lionwebsite/Message/MessageCodec.java b/src/main/java/com/lion/lionwebsite/Message/MessageCodec.java index 04f8cd0..b0bd3ba 100644 --- a/src/main/java/com/lion/lionwebsite/Message/MessageCodec.java +++ b/src/main/java/com/lion/lionwebsite/Message/MessageCodec.java @@ -1,7 +1,7 @@ package com.lion.lionwebsite.Message; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; import io.netty.buffer.ByteBuf; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.ByteToMessageCodec; diff --git a/src/main/java/com/lion/lionwebsite/Service/GalleryManageService.java b/src/main/java/com/lion/lionwebsite/Service/GalleryManageService.java index 02ce371..3f5ba00 100644 --- a/src/main/java/com/lion/lionwebsite/Service/GalleryManageService.java +++ b/src/main/java/com/lion/lionwebsite/Service/GalleryManageService.java @@ -11,7 +11,7 @@ import com.lion.lionwebsite.Util.ImageFileCache; import java.nio.file.Path; import com.lion.lionwebsite.Util.GalleryUtil; import com.lion.lionwebsite.Util.Response; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.Data; diff --git a/src/main/java/com/lion/lionwebsite/Service/PersonalService.java b/src/main/java/com/lion/lionwebsite/Service/PersonalService.java index e8217a2..dd5dcf0 100644 --- a/src/main/java/com/lion/lionwebsite/Service/PersonalService.java +++ b/src/main/java/com/lion/lionwebsite/Service/PersonalService.java @@ -12,7 +12,7 @@ import com.lion.lionwebsite.Interceptor.TaskHandlerInterceptor; import com.lion.lionwebsite.Util.CustomUtil; import com.lion.lionwebsite.Util.FileDownload; import com.lion.lionwebsite.Util.Response; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; diff --git a/src/main/java/com/lion/lionwebsite/Service/QueryService.java b/src/main/java/com/lion/lionwebsite/Service/QueryService.java index c02ae6f..40f6ec7 100644 --- a/src/main/java/com/lion/lionwebsite/Service/QueryService.java +++ b/src/main/java/com/lion/lionwebsite/Service/QueryService.java @@ -6,7 +6,7 @@ import com.lion.lionwebsite.Util.GalleryUtil; import com.lion.lionwebsite.Util.ImageFileCache; import java.nio.file.Path; import com.lion.lionwebsite.Util.Response; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; import jakarta.servlet.ServletOutputStream; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; diff --git a/src/main/java/com/lion/lionwebsite/Service/SubscriptionStandbySnapshotService.java b/src/main/java/com/lion/lionwebsite/Service/SubscriptionStandbySnapshotService.java index 50d5abf..cc71d4d 100644 --- a/src/main/java/com/lion/lionwebsite/Service/SubscriptionStandbySnapshotService.java +++ b/src/main/java/com/lion/lionwebsite/Service/SubscriptionStandbySnapshotService.java @@ -1,6 +1,6 @@ package com.lion.lionwebsite.Service; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; import com.lion.lionwebsite.Dao.normal.SubMapper; import com.lion.lionwebsite.Domain.SubBind; import com.lion.lionwebsite.Domain.SubscriptionAccount; diff --git a/src/main/java/com/lion/lionwebsite/Service/UserService.java b/src/main/java/com/lion/lionwebsite/Service/UserService.java index de25c2b..a3d43d8 100644 --- a/src/main/java/com/lion/lionwebsite/Service/UserService.java +++ b/src/main/java/com/lion/lionwebsite/Service/UserService.java @@ -7,7 +7,7 @@ import com.lion.lionwebsite.Domain.User; import com.lion.lionwebsite.Interceptor.TaskHandlerInterceptor; import com.lion.lionwebsite.Util.CustomUtil; import com.lion.lionwebsite.Util.Response; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; diff --git a/src/main/java/com/lion/lionwebsite/Service/WebSocketService.java b/src/main/java/com/lion/lionwebsite/Service/WebSocketService.java index f8d8510..1a3aa43 100644 --- a/src/main/java/com/lion/lionwebsite/Service/WebSocketService.java +++ b/src/main/java/com/lion/lionwebsite/Service/WebSocketService.java @@ -1,7 +1,7 @@ package com.lion.lionwebsite.Service; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; +import tools.jackson.databind.ObjectMapper; +import tools.jackson.databind.node.ObjectNode; import com.lion.lionwebsite.Domain.GalleryTask; import com.lion.lionwebsite.Util.CustomUtil; import lombok.extern.slf4j.Slf4j; diff --git a/src/main/java/com/lion/lionwebsite/Util/CustomUtil.java b/src/main/java/com/lion/lionwebsite/Util/CustomUtil.java index c64c575..bd2066f 100644 --- a/src/main/java/com/lion/lionwebsite/Util/CustomUtil.java +++ b/src/main/java/com/lion/lionwebsite/Util/CustomUtil.java @@ -1,6 +1,6 @@ package com.lion.lionwebsite.Util; -import com.fasterxml.jackson.databind.ObjectMapper; +import tools.jackson.databind.ObjectMapper; import jakarta.servlet.http.HttpServletResponse; import lombok.Data; import lombok.extern.slf4j.Slf4j; diff --git a/src/main/java/com/lion/lionwebsite/Util/GalleryUtil.java b/src/main/java/com/lion/lionwebsite/Util/GalleryUtil.java index 09e2e21..a456e47 100644 --- a/src/main/java/com/lion/lionwebsite/Util/GalleryUtil.java +++ b/src/main/java/com/lion/lionwebsite/Util/GalleryUtil.java @@ -1,6 +1,6 @@ package com.lion.lionwebsite.Util; -import com.fasterxml.jackson.databind.JsonNode; +import tools.jackson.databind.JsonNode; import com.lion.lionwebsite.Domain.Gallery; import com.lion.lionwebsite.Domain.ImageKeyCache; import com.lion.lionwebsite.Exception.ResolutionNotMatchException; diff --git a/src/main/java/com/lion/lionwebsite/Util/Response.java b/src/main/java/com/lion/lionwebsite/Util/Response.java index 067f2c4..efbee12 100644 --- a/src/main/java/com/lion/lionwebsite/Util/Response.java +++ b/src/main/java/com/lion/lionwebsite/Util/Response.java @@ -1,7 +1,7 @@ package com.lion.lionwebsite.Util; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.node.ObjectNode; +import tools.jackson.databind.JsonNode; +import tools.jackson.databind.node.ObjectNode; public class Response {