Spring Boot 4.0.6 默认引入 Jackson 3.1.2,但项目中 1018 处 @JsonSerialize 注解使用的是 Jackson 2 的 com.fasterxml.jackson.* 包,导致注解被忽略, Long 字段序列化为裸数字,引发前端 JS Number 精度丢失(Bug #681 的根因)。 - com.fasterxml.jackson.databind.* → tools.jackson.databind.* - com.fasterxml.jackson.core.* → tools.jackson.core.* - com.fasterxml.jackson.annotation.* 保留(Jackson 3 仍用同包名) - com.fasterxml.jackson.datatype.jsr310.* 保留(不再需要,Jackson 3 内置 JavaTime 支持) - JsonSerializer<T> → ValueSerializer<T> - JsonDeserializer<T> → ValueDeserializer<T> - SerializerProvider → SerializationContext - JsonMappingException → DatabindException - JsonProcessingException → JacksonException(变 RuntimeException) - ContextualSerializer → 合并入 ValueSerializer(createContextual 成 default 方法) - LaissezFaireSubTypeValidator → BasicPolymorphicTypeValidator.builder() - Jackson2ObjectMapperBuilderCustomizer → JsonMapperBuilderCustomizer - ObjectMapper.configure() 返回 void → JsonMapper.builder().disable(...).build() - ObjectMapper.setPropertyNamingStrategy() → JsonMapper.builder().propertyNamingStrategy() - ObjectMapper.setDateFormat() → JsonMapper.builder().defaultDateFormat() - ObjectNode.fieldNames() → JsonNode.propertyNames()(返回 Collection<String>) - SerializationFeature.WRITE_DATES_AS_TIMESTAMPS 已移除(JavaTime 自动处理) - ObjectMapper 的 JavaTimeModule 注册不再需要(Jackson 3 内置) - core-framework/.../ApplicationConfig.java:重写为 JsonMapperBuilderCustomizer + 自定义 LocalDateTime 序列化(Jackson 3 内置 ext.javatime.*) - core-framework/.../FastJson2JsonRedisSerializer.java:用 BasicPolymorphicTypeValidator 替代 LaissezFaireSubTypeValidator - core-common/.../JsonUtils.java:改为 JsonMapper.builder() 模式 - core-common/.../SensitiveJsonSerializer.java:JsonSerializer → ValueSerializer - 5 个模块 jackson-databind groupId 改为 tools.jackson.core(版本由 Spring Boot BOM 管理) - jackson-annotations 保留 com.fasterxml.jackson.core(Jackson 3 仍用同包名) - ✅ mvn compile 全 11 模块通过 - ✅ mvn package 成功生成 fat JAR - ✅ 后端启动正常(JDK 25,Spring Boot 4.0.6) - ✅ 登录 API 返回 JWT token - ✅ /charge-manage/charge/encounter-patient-page 响应: - encounterId: "2032288214655660033"(字符串,@JsonSerialize 生效) - patientId: "2026486681850499074"(字符串,@JsonSerialize 生效) - ✅ Bug #681 根因彻底解决(Long 精度丢失) - Bug #681(前端兜底 fix: acf685fba)+ 本 commit(后端根治) - Bug #281(历史 jsr310 模块问题)随 Jackson 3 内置 JavaTime 一并解决 - Playwright E2E 全量回归(51 个 spec) - 时间字段序列化专项测试(LocalDateTime 格式验证) - 删除 Jackson 2 starter(spring-boot-jackson2)的可行性评估
205 lines
8.9 KiB
XML
Executable File
205 lines
8.9 KiB
XML
Executable File
<?xml version="1.0" encoding="UTF-8"?>
|
||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||
xmlns="http://maven.apache.org/POM/4.0.0"
|
||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||
<parent>
|
||
<groupId>com.healthlink.his</groupId>
|
||
<artifactId>healthlink-his-server</artifactId>
|
||
<version>0.0.1-SNAPSHOT</version>
|
||
</parent>
|
||
<modelVersion>4.0.0</modelVersion>
|
||
|
||
<groupId>com.core</groupId>
|
||
<artifactId>core-common</artifactId>
|
||
|
||
<description>
|
||
common通çâ€Â¨å·¥å…·
|
||
</description>
|
||
|
||
<build>
|
||
<plugins>
|
||
<plugin>
|
||
<groupId>org.apache.maven.plugins</groupId>
|
||
<artifactId>maven-compiler-plugin</artifactId>
|
||
<version>${maven-compiler-plugin.version}</version>
|
||
<configuration>
|
||
<source>${java.version}</source>
|
||
<target>${java.version}</target>
|
||
<encoding>UTF-8</encoding>
|
||
<compilerArgs>
|
||
<arg>-parameters</arg>
|
||
<arg>--add-modules</arg>
|
||
<arg>java.base</arg>
|
||
</compilerArgs>
|
||
<annotationProcessorPaths>
|
||
<path>
|
||
<groupId>org.projectlombok</groupId>
|
||
<artifactId>lombok</artifactId>
|
||
<version>${lombok.version}</version>
|
||
</path>
|
||
</annotationProcessorPaths>
|
||
</configuration>
|
||
</plugin>
|
||
</plugins>
|
||
</build>
|
||
|
||
<dependencies>
|
||
|
||
<!-- mybatis-plus 增强CRUD -->
|
||
<dependency>
|
||
<groupId>com.baomidou</groupId>
|
||
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
|
||
<exclusions>
|
||
<exclusion>
|
||
<groupId>com.baomidou</groupId>
|
||
<artifactId>mybatis-plus-boot-starter</artifactId>
|
||
</exclusion>
|
||
<exclusion>
|
||
<groupId>org.jetbrains.kotlin</groupId>
|
||
<artifactId>kotlin-reflect</artifactId>
|
||
</exclusion>
|
||
</exclusions>
|
||
</dependency>
|
||
|
||
<!-- lombok -->
|
||
<dependency>
|
||
<groupId>org.projectlombok</groupId>
|
||
<artifactId>lombok</artifactId>
|
||
</dependency>
|
||
|
||
<!-- Spring框架基本的核心工具 -->
|
||
<dependency>
|
||
<groupId>org.springframework</groupId>
|
||
<artifactId>spring-context-support</artifactId>
|
||
</dependency>
|
||
|
||
<!-- SpringWeb模åÂÂ -->
|
||
<dependency>
|
||
<groupId>org.springframework</groupId>
|
||
<artifactId>spring-web</artifactId>
|
||
</dependency>
|
||
|
||
<!-- spring security 安全认诠-->
|
||
<dependency>
|
||
<groupId>org.springframework.boot</groupId>
|
||
<artifactId>spring-boot-starter-security</artifactId>
|
||
</dependency>
|
||
|
||
<!-- pagehelper 分页æÂÂ’ä»¶ -->
|
||
<dependency>
|
||
<groupId>com.github.pagehelper</groupId>
|
||
<artifactId>pagehelper-spring-boot-starter</artifactId>
|
||
</dependency>
|
||
|
||
<!-- jsr250 annotations -->
|
||
<dependency>
|
||
<groupId>jakarta.annotation</groupId>
|
||
<artifactId>jakarta.annotation-api</artifactId>
|
||
</dependency>
|
||
|
||
<!-- 自定义验è¯ÂÂ注解 -->
|
||
<dependency>
|
||
<groupId>org.springframework.boot</groupId>
|
||
<artifactId>spring-boot-starter-validation</artifactId>
|
||
</dependency>
|
||
|
||
<!--常çâ€Â¨å·¥å…·ç±» -->
|
||
<dependency>
|
||
<groupId>org.apache.commons</groupId>
|
||
<artifactId>commons-lang3</artifactId>
|
||
</dependency>
|
||
|
||
<!-- JSON工具类 -->
|
||
<!-- JSON工具类 -->
|
||
<dependency>
|
||
<groupId>tools.jackson.core</groupId>
|
||
<artifactId>jackson-databind</artifactId>
|
||
</dependency>
|
||
|
||
<!-- 阿里JSONè§£æžÂÂ器 -->
|
||
<!-- io常çâ€Â¨å·¥å…·ç±» -->
|
||
<dependency>
|
||
<groupId>commons-io</groupId>
|
||
<artifactId>commons-io</artifactId>
|
||
</dependency>
|
||
|
||
<!-- excel工具 -->
|
||
<dependency>
|
||
<groupId>org.apache.poi</groupId>
|
||
<artifactId>poi-ooxml</artifactId>
|
||
</dependency>
|
||
|
||
<!-- ymlè§£æžÂÂ器 -->
|
||
<dependency>
|
||
<groupId>org.yaml</groupId>
|
||
<artifactId>snakeyaml</artifactId>
|
||
</dependency>
|
||
|
||
<!-- Tokençâ€ÂŸæˆÂÂ与解æžÂÂ-->
|
||
<dependency>
|
||
<groupId>io.jsonwebtoken</groupId>
|
||
<artifactId>jjwt-api</artifactId>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>io.jsonwebtoken</groupId>
|
||
<artifactId>jjwt-impl</artifactId>
|
||
<scope>runtime</scope>
|
||
</dependency>
|
||
<dependency>
|
||
<groupId>io.jsonwebtoken</groupId>
|
||
<artifactId>jjwt-jackson</artifactId>
|
||
<scope>runtime</scope>
|
||
</dependency>
|
||
|
||
<!-- Jaxb -->
|
||
<dependency>
|
||
<groupId>jakarta.xml.bind</groupId>
|
||
<artifactId>jakarta.xml.bind-api</artifactId>
|
||
</dependency>
|
||
|
||
<!-- redis 缓å˜æ“ÂÂ作 -->
|
||
<dependency>
|
||
<groupId>org.springframework.boot</groupId>
|
||
<artifactId>spring-boot-starter-data-redis</artifactId>
|
||
</dependency>
|
||
|
||
<!-- pool 对象池-->
|
||
<dependency>
|
||
<groupId>org.apache.commons</groupId>
|
||
<artifactId>commons-pool2</artifactId>
|
||
</dependency>
|
||
|
||
<!-- è§£æžÂÂ客户端æ“ÂÂ作系统ã€ÂÂæµÂÂ览器ç‰ -->
|
||
<dependency>
|
||
<groupId>eu.bitwalker</groupId>
|
||
<artifactId>UserAgentUtils</artifactId>
|
||
</dependency>
|
||
|
||
<!-- servlet包 -->
|
||
<dependency>
|
||
<groupId>jakarta.servlet</groupId>
|
||
<artifactId>jakarta.servlet-api</artifactId>
|
||
</dependency>
|
||
|
||
<!-- ä¸ÂÂ文汉åÂÂâ€â€ÃƒÂ¨Ã‚½Â¬Ã¦Â¢为首åÂÂâ€â€ÃƒÂ¦Ã‚¯ÂÂ拼音包 -->
|
||
<dependency>
|
||
<groupId>com.belerweb</groupId>
|
||
<artifactId>pinyin4j</artifactId>
|
||
<version>2.5.1</version>
|
||
</dependency>
|
||
|
||
<dependency>
|
||
<groupId>com.google.code.gson</groupId>
|
||
<artifactId>gson</artifactId>
|
||
</dependency>
|
||
|
||
|
||
<dependency>
|
||
<groupId>org.springframework.boot</groupId>
|
||
<artifactId>spring-boot-starter-test</artifactId>
|
||
<scope>test</scope>
|
||
</dependency>
|
||
</dependencies>
|
||
|
||
</project>
|