chore(deps): Spring Boot 2.5.15→2.7.18 + MyBatis Plus 3.5.5→3.5.16

升级内容:
- Spring Boot 2.5.15 → 2.7.18 (含 Spring Security 5.7, Tomcat 9.0.96)
- MyBatis Plus 3.5.5 → 3.5.16 (含 mybatis-plus-jsqlparser 拆分模块)
- JSqlParser 4.5 → 5.2 (MyBatis Plus 3.5.9+ 要求)
- PageHelper 1.4.7 → 2.1.1 (兼容 JSqlParser 5.x)
- mysql:mysql-connector-java → com.mysql:mysql-connector-j (Spring Boot 2.7 BOM 变更)

兼容性修复:
- FieldStrategy.IGNORED → FieldStrategy.NEVER (3.5.16 重命名)
- ScanOptionsBuilder → ScanOptions.scanOptions() 工厂方法
- saveOrUpdate(entity, wrapper) → saveOrUpdate(entity) (wrapper 签名移除)
- PermitAllUrlProperties: getBean(class) → getBean(name,class) + null 检查
- application.yml: 添加 spring.mvc.pathmatch.matching-strategy=ant-path-matcher
- application.yml: 禁用 springfox (与 Spring Boot 2.7 不兼容)

验证结果:
-  mvn clean package -DskipTests BUILD SUCCESS
-  登录接口 HTTP 200
-  分页查询 (数据字典 326 条, 用户 84 条)
-  路由信息 (22 个顶级菜单)
-  流程引擎 (Flowable) 正常初始化
This commit is contained in:
2026-06-04 13:34:35 +08:00
parent bb7eb2eca7
commit dbe146725a
14 changed files with 465 additions and 37 deletions

View File

@@ -1,13 +1,14 @@
<?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">
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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.openhis</groupId>
<artifactId>openhis-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.core</groupId>
<artifactId>core-framework</artifactId>
@@ -77,12 +78,13 @@
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
<!-- JSQLParser - 用于MyBatis Plus -->
<!-- MyBatis-Plus JSQLParser 插件 (3.5.9+ 拆分) -->
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-jsqlparser</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
</dependencies>
</project>
</project>

View File

@@ -29,22 +29,24 @@ public class PermitAllUrlProperties implements InitializingBean, ApplicationCont
@Override
public void afterPropertiesSet() {
RequestMappingHandlerMapping mapping = applicationContext.getBean(RequestMappingHandlerMapping.class);
RequestMappingHandlerMapping mapping = applicationContext.getBean("requestMappingHandlerMapping", RequestMappingHandlerMapping.class);
Map<RequestMappingInfo, HandlerMethod> map = mapping.getHandlerMethods();
map.keySet().forEach(info -> {
// Spring Boot 2.7+ 部分 RequestMappingInfo 的 patternsCondition 可能为 null
if (info.getPatternsCondition() == null) return;
HandlerMethod handlerMethod = map.get(info);
// 获取方法上边的注解 替代path variable 为 *
Anonymous method = AnnotationUtils.findAnnotation(handlerMethod.getMethod(), Anonymous.class);
Optional.ofNullable(method)
.ifPresent(anonymous -> Objects.requireNonNull(info.getPatternsCondition().getPatterns())
.ifPresent(anonymous -> info.getPatternsCondition().getPatterns()
.forEach(url -> urls.add(RegExUtils.replaceAll(url, PATTERN, ASTERISK))));
// 获取类上边的注解, 替代path variable 为 *
Anonymous controller = AnnotationUtils.findAnnotation(handlerMethod.getBeanType(), Anonymous.class);
Optional.ofNullable(controller)
.ifPresent(anonymous -> Objects.requireNonNull(info.getPatternsCondition().getPatterns())
.ifPresent(anonymous -> info.getPatternsCondition().getPatterns()
.forEach(url -> urls.add(RegExUtils.replaceAll(url, PATTERN, ASTERISK))));
});
}