Commit 98697ee075585b5fb0d9f8fd2de0fdf9636edb86

Authored by YunaiV
1 parent a8e8c14a

⬆️

Showing 1147 changed files with 1979 additions and 1937 deletions

Too many changes.

To preserve performance only 100 of 1147 files are displayed.

README.md
  1 +<p align="center">
  2 + <img src="https://img.shields.io/badge/Spring%20Boot-3.2.0-blue.svg" alt="Downloads">
  3 + <img src="https://img.shields.io/badge/Vue-3.2-blue.svg" alt="Downloads">
  4 + <img src="https://img.shields.io/github/license/YunaiV/ruoyi-vue-pro"/>
  5 +</p>
  6 +
1 **严肃声明:现在、未来都不会有商业版本,所有代码全部开源!!** 7 **严肃声明:现在、未来都不会有商业版本,所有代码全部开源!!**
2 8
3 **「我喜欢写代码,乐此不疲」** 9 **「我喜欢写代码,乐此不疲」**
@@ -15,8 +21,6 @@ @@ -15,8 +21,6 @@
15 * 启动文档:<https://doc.iocoder.cn/quick-start/> 21 * 启动文档:<https://doc.iocoder.cn/quick-start/>
16 * 视频教程:<https://doc.iocoder.cn/video/> 22 * 视频教程:<https://doc.iocoder.cn/video/>
17 23
18 -已支持 Spring Boot 3.X + JDK 17 版本,可见 [master-boot3](https://gitee.com/zhijiantianya/ruoyi-vue-pro/blob/master/README.md) 分支。  
19 -  
20 ## 🐯 平台简介 24 ## 🐯 平台简介
21 25
22 **芋道**,以开发者为中心,打造中国第一流的快速开发平台,全部开源,个人与企业可 100% 免费使用。 26 **芋道**,以开发者为中心,打造中国第一流的快速开发平台,全部开源,个人与企业可 100% 免费使用。
@@ -27,6 +31,7 @@ @@ -27,6 +31,7 @@
27 31
28 ![架构图](/.image/common/ruoyi-vue-pro-architecture.png) 32 ![架构图](/.image/common/ruoyi-vue-pro-architecture.png)
29 33
  34 +* Java 后端:`master` 分支为 JDK 21 + Spring Boot 3.2.0,`master-jdk8` 分支为 JDK8 + Spring Boot 2.7.18
30 * 管理后台的电脑端:Vue3 提供 `element-plus`、`vben(ant-design-vue)` 两个版本,Vue2 提供 `element-ui` 版本 35 * 管理后台的电脑端:Vue3 提供 `element-plus`、`vben(ant-design-vue)` 两个版本,Vue2 提供 `element-ui` 版本
31 * 管理后台的移动端:采用 `uni-app` 方案,一份代码多终端适配,同时支持 APP、小程序、H5! 36 * 管理后台的移动端:采用 `uni-app` 方案,一份代码多终端适配,同时支持 APP、小程序、H5!
32 * 后端采用 Spring Boot 多模块架构、MySQL + MyBatis Plus、Redis + Redisson 37 * 后端采用 Spring Boot 多模块架构、MySQL + MyBatis Plus、Redis + Redisson
@@ -69,17 +74,19 @@ @@ -69,17 +74,19 @@
69 74
70 ## 🐰 分支说明 75 ## 🐰 分支说明
71 76
72 -| | JDK 8 完整版 | JDK 8 精简版 | JDK 17 完整版 |  
73 -|-------|-----------------------------------------------------------|--------------------------------------------------------------------|-----------------------------------------------------------------------------|  
74 -| 分支 | [`master`](https://gitee.com/zhijiantianya/ruoyi-vue-pro) | [`mini`](https://gitee.com/zhijiantianya/ruoyi-vue-pro/tree/mini/) | [`master-boot3`](https://gitee.com/zhijiantianya/ruoyi-vue-pro/tree/master-boot3/) |  
75 -| 说明 | 包括所有功能 | 只保留核心功能 | 适配 Spring Boot 3.X |  
76 -| 系统功能 | √ | √ | √ |  
77 -| 基础设施 | √ | √ | √ |  
78 -| 会员中心 | √ | √ | √ |  
79 -| 工作流程 | √ | x | √ |  
80 -| 数据报表 | √ | x | 适配中 |  
81 -| 商城系统 | √ | x | √ |  
82 -| 微信公众号 | √ | x | √ | 77 +### ⬅️ 完整版
  78 +
  79 +【完整版】包括系统功能、基础设施、会员中心、数据报表、工作流程、商城系统、微信公众号、客户管理系统等功能。
  80 +
  81 +* JDK 21 + Spring Boot 3.2.0 版本:<https://gitee.com/zhijiantianya/ruoyi-vue-pro> 的 `master` 分支
  82 +* JDK 8 + Spring Boot 2.7.18 版本:<https://gitee.com/zhijiantianya/ruoyi-vue-pro> 的 `master-jdk8` 分支
  83 +
  84 +### ➡️️ 精简版
  85 +
  86 +【精简版】只包括系统功能、基础设施功能,不包括会员中心、数据报表、工作流程、商城系统、微信公众号等功能。
  87 +
  88 +* JDK 21 + Spring Boot 3.2.0 版本:<https://gitee.com/yudaocode/yudao-boot-mini> 的 `master` 分支
  89 +* JDK 8 + Spring Boot 2.7.18 版本:<https://gitee.com/yudaocode/yudao-boot-mini> 的 `master-jdk8` 分支
83 90
84 ## 😎 开源协议 91 ## 😎 开源协议
85 92
@@ -258,27 +265,27 @@ _前端基于 crmeb uniapp 经过授权重构,优化代码实现,接入芋 @@ -258,27 +265,27 @@ _前端基于 crmeb uniapp 经过授权重构,优化代码实现,接入芋
258 265
259 | 框架 | 说明 | 版本 | 学习指南 | 266 | 框架 | 说明 | 版本 | 学习指南 |
260 |---------------------------------------------------------------------------------------------|------------------|----------------|----------------------------------------------------------------| 267 |---------------------------------------------------------------------------------------------|------------------|----------------|----------------------------------------------------------------|
261 -| [Spring Boot](https://spring.io/projects/spring-boot) | 应用开发框架 | 2.7.17 | [文档](https://github.com/YunaiV/SpringBoot-Labs) | 268 +| [Spring Boot](https://spring.io/projects/spring-boot) | 应用开发框架 | 3.2.0 | [文档](https://github.com/YunaiV/SpringBoot-Labs) |
262 | [MySQL](https://www.mysql.com/cn/) | 数据库服务器 | 5.7 / 8.0+ | | 269 | [MySQL](https://www.mysql.com/cn/) | 数据库服务器 | 5.7 / 8.0+ | |
263 -| [Druid](https://github.com/alibaba/druid) | JDBC 连接池、监控组件 | 1.2.19 | [文档](http://www.iocoder.cn/Spring-Boot/datasource-pool/?yudao) |  
264 -| [MyBatis Plus](https://mp.baomidou.com/) | MyBatis 增强工具包 | 3.5.3.2 | [文档](http://www.iocoder.cn/Spring-Boot/MyBatis/?yudao) |  
265 -| [Dynamic Datasource](https://dynamic-datasource.com/) | 动态数据源 | 3.6.1 | [文档](http://www.iocoder.cn/Spring-Boot/datasource-pool/?yudao) | 270 +| [Druid](https://github.com/alibaba/druid) | JDBC 连接池、监控组件 | 1.2.20 | [文档](http://www.iocoder.cn/Spring-Boot/datasource-pool/?yudao) |
  271 +| [MyBatis Plus](https://mp.baomidou.com/) | MyBatis 增强工具包 | 3.5.4.1 | [文档](http://www.iocoder.cn/Spring-Boot/MyBatis/?yudao) |
  272 +| [Dynamic Datasource](https://dynamic-datasource.com/) | 动态数据源 | 4.2.0 | [文档](http://www.iocoder.cn/Spring-Boot/datasource-pool/?yudao) |
266 | [Redis](https://redis.io/) | key-value 数据库 | 5.0 / 6.0 /7.0 | | 273 | [Redis](https://redis.io/) | key-value 数据库 | 5.0 / 6.0 /7.0 | |
267 -| [Redisson](https://github.com/redisson/redisson) | Redis 客户端 | 3.18.0 | [文档](http://www.iocoder.cn/Spring-Boot/Redis/?yudao) |  
268 -| [Spring MVC](https://github.com/spring-projects/spring-framework/tree/master/spring-webmvc) | MVC 框架 | 5.3.24 | [文档](http://www.iocoder.cn/SpringMVC/MVC/?yudao) |  
269 -| [Spring Security](https://github.com/spring-projects/spring-security) | Spring 安全框架 | 5.7.11 | [文档](http://www.iocoder.cn/Spring-Boot/Spring-Security/?yudao) |  
270 -| [Hibernate Validator](https://github.com/hibernate/hibernate-validator) | 参数校验组件 | 6.2.5 | [文档](http://www.iocoder.cn/Spring-Boot/Validation/?yudao) |  
271 -| [Flowable](https://github.com/flowable/flowable-engine) | 工作流引擎 | 6.8.0 | [文档](https://doc.iocoder.cn/bpm/) | 274 +| [Redisson](https://github.com/redisson/redisson) | Redis 客户端 | 3.25.0 | [文档](http://www.iocoder.cn/Spring-Boot/Redis/?yudao) |
  275 +| [Spring MVC](https://github.com/spring-projects/spring-framework/tree/master/spring-webmvc) | MVC 框架 | 6.1.1 | [文档](http://www.iocoder.cn/SpringMVC/MVC/?yudao) |
  276 +| [Spring Security](https://github.com/spring-projects/spring-security) | Spring 安全框架 | 6.2.0 | [文档](http://www.iocoder.cn/Spring-Boot/Spring-Security/?yudao) |
  277 +| [Hibernate Validator](https://github.com/hibernate/hibernate-validator) | 参数校验组件 | 8.0.1 | [文档](http://www.iocoder.cn/Spring-Boot/Validation/?yudao) |
  278 +| [Flowable](https://github.com/flowable/flowable-engine) | 工作流引擎 | 7.0.0 | [文档](https://doc.iocoder.cn/bpm/) |
272 | [Quartz](https://github.com/quartz-scheduler) | 任务调度组件 | 2.3.2 | [文档](http://www.iocoder.cn/Spring-Boot/Job/?yudao) | 279 | [Quartz](https://github.com/quartz-scheduler) | 任务调度组件 | 2.3.2 | [文档](http://www.iocoder.cn/Spring-Boot/Job/?yudao) |
273 -| [Springdoc](https://springdoc.org/) | Swagger 文档 | 1.6.15 | [文档](http://www.iocoder.cn/Spring-Boot/Swagger/?yudao) |  
274 -| [Resilience4j](https://github.com/resilience4j/resilience4j) | 服务保障组件 | 1.7.1 | [文档](http://www.iocoder.cn/Spring-Boot/Resilience4j/?yudao) |  
275 -| [SkyWalking](https://skywalking.apache.org/) | 分布式应用追踪系统 | 8.12.0 | [文档](http://www.iocoder.cn/Spring-Boot/SkyWalking/?yudao) |  
276 -| [Spring Boot Admin](https://github.com/codecentric/spring-boot-admin) | Spring Boot 监控平台 | 2.7.10 | [文档](http://www.iocoder.cn/Spring-Boot/Admin/?yudao) |  
277 -| [Jackson](https://github.com/FasterXML/jackson) | JSON 工具库 | 2.13.3 | | 280 +| [Springdoc](https://springdoc.org/) | Swagger 文档 | 2.2.0 | [文档](http://www.iocoder.cn/Spring-Boot/Swagger/?yudao) |
  281 +| [Resilience4j](https://github.com/resilience4j/resilience4j) | 服务保障组件 | 2.1.0 | [文档](http://www.iocoder.cn/Spring-Boot/Resilience4j/?yudao) |
  282 +| [SkyWalking](https://skywalking.apache.org/) | 分布式应用追踪系统 | 9.0.0 | [文档](http://www.iocoder.cn/Spring-Boot/SkyWalking/?yudao) |
  283 +| [Spring Boot Admin](https://github.com/codecentric/spring-boot-admin) | Spring Boot 监控平台 | 3.1.8 | [文档](http://www.iocoder.cn/Spring-Boot/Admin/?yudao) |
  284 +| [Jackson](https://github.com/FasterXML/jackson) | JSON 工具库 | 2.15.3 | |
278 | [MapStruct](https://mapstruct.org/) | Java Bean 转换 | 1.5.5.Final | [文档](http://www.iocoder.cn/Spring-Boot/MapStruct/?yudao) | 285 | [MapStruct](https://mapstruct.org/) | Java Bean 转换 | 1.5.5.Final | [文档](http://www.iocoder.cn/Spring-Boot/MapStruct/?yudao) |
279 | [Lombok](https://projectlombok.org/) | 消除冗长的 Java 代码 | 1.18.30 | [文档](http://www.iocoder.cn/Spring-Boot/Lombok/?yudao) | 286 | [Lombok](https://projectlombok.org/) | 消除冗长的 Java 代码 | 1.18.30 | [文档](http://www.iocoder.cn/Spring-Boot/Lombok/?yudao) |
280 -| [JUnit](https://junit.org/junit5/) | Java 单元测试框架 | 5.8.2 | - |  
281 -| [Mockito](https://github.com/mockito/mockito) | Java Mock 框架 | 4.8.0 | - | 287 +| [JUnit](https://junit.org/junit5/) | Java 单元测试框架 | 5.10.1 | - |
  288 +| [Mockito](https://github.com/mockito/mockito) | Java Mock 框架 | 5.7.0 | - |
282 289
283 ## 🐷 演示图 290 ## 🐷 演示图
284 291
@@ -31,17 +31,17 @@ @@ -31,17 +31,17 @@
31 <url>https://github.com/YunaiV/ruoyi-vue-pro</url> 31 <url>https://github.com/YunaiV/ruoyi-vue-pro</url>
32 32
33 <properties> 33 <properties>
34 - <revision>1.9.0-snapshot</revision> 34 + <revision>2.0.0-snapshot</revision>
35 <!-- Maven 相关 --> 35 <!-- Maven 相关 -->
36 - <java.version>1.8</java.version> 36 + <java.version>21</java.version>
37 <maven.compiler.source>${java.version}</maven.compiler.source> 37 <maven.compiler.source>${java.version}</maven.compiler.source>
38 <maven.compiler.target>${java.version}</maven.compiler.target> 38 <maven.compiler.target>${java.version}</maven.compiler.target>
39 - <maven-surefire-plugin.version>3.0.0-M5</maven-surefire-plugin.version>  
40 - <maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version> 39 + <maven-surefire-plugin.version>3.2.2</maven-surefire-plugin.version>
  40 + <maven-compiler-plugin.version>3.11.0</maven-compiler-plugin.version>
41 <flatten-maven-plugin.version>1.5.0</flatten-maven-plugin.version> 41 <flatten-maven-plugin.version>1.5.0</flatten-maven-plugin.version>
42 <!-- 看看咋放到 bom 里 --> 42 <!-- 看看咋放到 bom 里 -->
43 <lombok.version>1.18.30</lombok.version> 43 <lombok.version>1.18.30</lombok.version>
44 - <spring.boot.version>2.7.17</spring.boot.version> 44 + <spring.boot.version>3.2.0</spring.boot.version>
45 <mapstruct.version>1.5.5.Final</mapstruct.version> 45 <mapstruct.version>1.5.5.Final</mapstruct.version>
46 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 46 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
47 </properties> 47 </properties>
@@ -92,6 +92,11 @@ @@ -92,6 +92,11 @@
92 <version>${mapstruct.version}</version> 92 <version>${mapstruct.version}</version>
93 </path> 93 </path>
94 </annotationProcessorPaths> 94 </annotationProcessorPaths>
  95 + <!-- 编译参数写在 arg 内,解决 Spring Boot 3.2 的 Parameter Name Discovery 问题 -->
  96 + <debug>false</debug>
  97 + <compilerArgs>
  98 + <arg>-parameters</arg>
  99 + </compilerArgs>
95 </configuration> 100 </configuration>
96 </plugin> 101 </plugin>
97 <plugin> 102 <plugin>
yudao-dependencies/pom.xml
@@ -14,53 +14,53 @@ @@ -14,53 +14,53 @@
14 <url>https://github.com/YunaiV/ruoyi-vue-pro</url> 14 <url>https://github.com/YunaiV/ruoyi-vue-pro</url>
15 15
16 <properties> 16 <properties>
17 - <revision>1.9.0-snapshot</revision> 17 + <revision>2.0.0-snapshot</revision>
18 <flatten-maven-plugin.version>1.5.0</flatten-maven-plugin.version> 18 <flatten-maven-plugin.version>1.5.0</flatten-maven-plugin.version>
19 <!-- 统一依赖管理 --> 19 <!-- 统一依赖管理 -->
20 - <spring.boot.version>2.7.17</spring.boot.version> 20 + <spring.boot.version>3.2.0</spring.boot.version>
21 <!-- Web 相关 --> 21 <!-- Web 相关 -->
22 - <springdoc.version>1.6.15</springdoc.version> 22 + <springdoc.version>2.2.0</springdoc.version>
23 <knife4j.version>4.3.0</knife4j.version> 23 <knife4j.version>4.3.0</knife4j.version>
24 - <servlet.versoin>2.5</servlet.versoin>  
25 <!-- DB 相关 --> 24 <!-- DB 相关 -->
26 <druid.version>1.2.20</druid.version> 25 <druid.version>1.2.20</druid.version>
27 - <mybatis-plus.version>3.5.4</mybatis-plus.version>  
28 - <mybatis-plus-generator.version>3.5.4</mybatis-plus-generator.version>  
29 - <dynamic-datasource.version>3.6.1</dynamic-datasource.version>  
30 - <mybatis-plus-join.version>1.4.7</mybatis-plus-join.version>  
31 - <redisson.version>3.18.0</redisson.version> 26 + <mybatis-plus.version>3.5.4.1</mybatis-plus.version>
  27 + <mybatis-plus-generator.version>3.5.4.1</mybatis-plus-generator.version>
  28 + <dynamic-datasource.version>4.2.0</dynamic-datasource.version>
  29 + <mybatis-plus-join.version>1.4.7.2</mybatis-plus-join.version>
  30 + <redisson.version>3.25.0</redisson.version>
32 <dm8.jdbc.version>8.1.3.62</dm8.jdbc.version> 31 <dm8.jdbc.version>8.1.3.62</dm8.jdbc.version>
33 <!-- 消息队列 --> 32 <!-- 消息队列 -->
34 <rocketmq-spring.version>2.2.3</rocketmq-spring.version> 33 <rocketmq-spring.version>2.2.3</rocketmq-spring.version>
35 <!-- 服务保障相关 --> 34 <!-- 服务保障相关 -->
36 <lock4j.version>2.2.5</lock4j.version> 35 <lock4j.version>2.2.5</lock4j.version>
37 - <resilience4j.version>1.7.1</resilience4j.version> 36 + <resilience4j.version>2.1.0</resilience4j.version>
38 <!-- 监控相关 --> 37 <!-- 监控相关 -->
39 - <skywalking.version>8.12.0</skywalking.version>  
40 - <spring-boot-admin.version>2.7.11</spring-boot-admin.version> 38 + <skywalking.version>9.0.0</skywalking.version>
  39 + <spring-boot-admin.version>3.1.8</spring-boot-admin.version>
41 <opentracing.version>0.33.0</opentracing.version> 40 <opentracing.version>0.33.0</opentracing.version>
42 <!-- Test 测试相关 --> 41 <!-- Test 测试相关 -->
43 - <podam.version>7.2.11.RELEASE</podam.version>  
44 - <jedis-mock.version>1.0.7</jedis-mock.version>  
45 - <mockito-inline.version>4.11.0</mockito-inline.version> 42 + <podam.version>8.0.0.RELEASE</podam.version>
  43 + <jedis-mock.version>1.0.12</jedis-mock.version>
  44 + <mockito-inline.version>5.2.0</mockito-inline.version>
46 <!-- Bpm 工作流相关 --> 45 <!-- Bpm 工作流相关 -->
47 - <flowable.version>6.8.0</flowable.version> 46 + <flowable.version>7.0.0</flowable.version>
48 <!-- 工具类相关 --> 47 <!-- 工具类相关 -->
49 - <captcha-plus.version>1.0.10</captcha-plus.version>  
50 - <jsoup.version>1.16.2</jsoup.version> 48 + <captcha-plus.version>2.0.3</captcha-plus.version>
  49 + <jsoup.version>1.17.1</jsoup.version>
51 <lombok.version>1.18.30</lombok.version> 50 <lombok.version>1.18.30</lombok.version>
52 <mapstruct.version>1.5.5.Final</mapstruct.version> 51 <mapstruct.version>1.5.5.Final</mapstruct.version>
53 - <hutool.version>5.8.22</hutool.version> 52 + <hutool-5.version>5.8.23</hutool-5.version>
  53 + <hutool-6.version>6.0.0-M8</hutool-6.version>
54 <easyexcel.verion>3.3.2</easyexcel.verion> 54 <easyexcel.verion>3.3.2</easyexcel.verion>
55 <velocity.version>2.3</velocity.version> 55 <velocity.version>2.3</velocity.version>
56 <screw.version>1.0.5</screw.version> 56 <screw.version>1.0.5</screw.version>
57 <fastjson.version>1.2.83</fastjson.version> 57 <fastjson.version>1.2.83</fastjson.version>
58 <guava.version>32.1.3-jre</guava.version> 58 <guava.version>32.1.3-jre</guava.version>
59 <guice.version>5.1.0</guice.version> 59 <guice.version>5.1.0</guice.version>
60 - <transmittable-thread-local.version>2.14.2</transmittable-thread-local.version> 60 + <transmittable-thread-local.version>2.14.4</transmittable-thread-local.version>
61 <commons-net.version>3.10.0</commons-net.version> 61 <commons-net.version>3.10.0</commons-net.version>
62 <jsch.version>0.1.55</jsch.version> 62 <jsch.version>0.1.55</jsch.version>
63 - <tika-core.version>2.7.0</tika-core.version> 63 + <tika-core.version>2.9.1</tika-core.version>
64 <ip2region.version>2.7.0</ip2region.version> 64 <ip2region.version>2.7.0</ip2region.version>
65 <!-- 三方云服务相关 --> 65 <!-- 三方云服务相关 -->
66 <okio.version>3.5.0</okio.version> 66 <okio.version>3.5.0</okio.version>
@@ -70,7 +70,7 @@ @@ -70,7 +70,7 @@
70 <aliyun-java-sdk-core.version>4.6.4</aliyun-java-sdk-core.version> 70 <aliyun-java-sdk-core.version>4.6.4</aliyun-java-sdk-core.version>
71 <aliyun-java-sdk-dysmsapi.version>2.2.1</aliyun-java-sdk-dysmsapi.version> 71 <aliyun-java-sdk-dysmsapi.version>2.2.1</aliyun-java-sdk-dysmsapi.version>
72 <tencentcloud-sdk-java.version>3.1.880</tencentcloud-sdk-java.version> 72 <tencentcloud-sdk-java.version>3.1.880</tencentcloud-sdk-java.version>
73 - <justauth.version>1.0.8</justauth.version> 73 + <justauth.version>2.0.5</justauth.version>
74 <jimureport.version>1.6.1</jimureport.version> 74 <jimureport.version>1.6.1</jimureport.version>
75 <xercesImpl.version>2.12.2</xercesImpl.version> 75 <xercesImpl.version>2.12.2</xercesImpl.version>
76 <weixin-java.version>4.5.7.B</weixin-java.version> 76 <weixin-java.version>4.5.7.B</weixin-java.version>
@@ -126,11 +126,6 @@ @@ -126,11 +126,6 @@
126 </dependency> 126 </dependency>
127 <dependency> 127 <dependency>
128 <groupId>cn.iocoder.boot</groupId> 128 <groupId>cn.iocoder.boot</groupId>
129 - <artifactId>yudao-spring-boot-starter-biz-social</artifactId>  
130 - <version>${revision}</version>  
131 - </dependency>  
132 - <dependency>  
133 - <groupId>cn.iocoder.boot</groupId>  
134 <artifactId>yudao-spring-boot-starter-biz-error-code</artifactId> 129 <artifactId>yudao-spring-boot-starter-biz-error-code</artifactId>
135 <version>${revision}</version> 130 <version>${revision}</version>
136 </dependency> 131 </dependency>
@@ -179,11 +174,16 @@ @@ -179,11 +174,16 @@
179 174
180 <dependency> 175 <dependency>
181 <groupId>com.github.xiaoymin</groupId> 176 <groupId>com.github.xiaoymin</groupId>
182 - <artifactId>knife4j-openapi3-spring-boot-starter</artifactId> 177 + <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
183 <version>${knife4j.version}</version> 178 <version>${knife4j.version}</version>
184 </dependency> 179 </dependency>
185 <dependency> 180 <dependency>
186 <groupId>org.springdoc</groupId> 181 <groupId>org.springdoc</groupId>
  182 + <artifactId>springdoc-openapi-starter-webmvc-api</artifactId>
  183 + <version>${springdoc.version}</version>
  184 + </dependency>
  185 + <dependency>
  186 + <groupId>org.springdoc</groupId>
187 <artifactId>springdoc-openapi-ui</artifactId> 187 <artifactId>springdoc-openapi-ui</artifactId>
188 <version>${springdoc.version}</version> 188 <version>${springdoc.version}</version>
189 </dependency> 189 </dependency>
@@ -197,12 +197,12 @@ @@ -197,12 +197,12 @@
197 197
198 <dependency> 198 <dependency>
199 <groupId>com.alibaba</groupId> 199 <groupId>com.alibaba</groupId>
200 - <artifactId>druid-spring-boot-starter</artifactId> 200 + <artifactId>druid-spring-boot-3-starter</artifactId>
201 <version>${druid.version}</version> 201 <version>${druid.version}</version>
202 </dependency> 202 </dependency>
203 <dependency> 203 <dependency>
204 <groupId>com.baomidou</groupId> 204 <groupId>com.baomidou</groupId>
205 - <artifactId>mybatis-plus-boot-starter</artifactId> 205 + <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
206 <version>${mybatis-plus.version}</version> 206 <version>${mybatis-plus.version}</version>
207 </dependency> 207 </dependency>
208 <dependency> 208 <dependency>
@@ -212,7 +212,7 @@ @@ -212,7 +212,7 @@
212 </dependency> 212 </dependency>
213 <dependency> 213 <dependency>
214 <groupId>com.baomidou</groupId> 214 <groupId>com.baomidou</groupId>
215 - <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <!-- 多数据源 --> 215 + <artifactId>dynamic-datasource-spring-boot3-starter</artifactId> <!-- 多数据源 -->
216 <version>${dynamic-datasource.version}</version> 216 <version>${dynamic-datasource.version}</version>
217 </dependency> 217 </dependency>
218 <dependency> 218 <dependency>
@@ -458,7 +458,12 @@ @@ -458,7 +458,12 @@
458 <dependency> 458 <dependency>
459 <groupId>cn.hutool</groupId> 459 <groupId>cn.hutool</groupId>
460 <artifactId>hutool-all</artifactId> 460 <artifactId>hutool-all</artifactId>
461 - <version>${hutool.version}</version> 461 + <version>${hutool-5.version}</version>
  462 + </dependency>
  463 + <dependency>
  464 + <groupId>org.dromara.hutool</groupId>
  465 + <artifactId>hutool-all</artifactId>
  466 + <version>${hutool-6.version}</version>
462 </dependency> 467 </dependency>
463 468
464 <dependency> 469 <dependency>
yudao-example/yudao-sso-demo-by-code/pom.xml
@@ -17,11 +17,11 @@ @@ -17,11 +17,11 @@
17 17
18 <properties> 18 <properties>
19 <!-- Maven 相关 --> 19 <!-- Maven 相关 -->
20 - <maven.compiler.source>8</maven.compiler.source>  
21 - <maven.compiler.target>8</maven.compiler.target> 20 + <maven.compiler.source>21</maven.compiler.source>
  21 + <maven.compiler.target>21</maven.compiler.target>
22 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 22 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
23 <!-- 统一依赖管理 --> 23 <!-- 统一依赖管理 -->
24 - <spring.boot.version>2.7.17</spring.boot.version> 24 + <spring.boot.version>3.2.0</spring.boot.version>
25 </properties> 25 </properties>
26 26
27 <dependencyManagement> 27 <dependencyManagement>
yudao-example/yudao-sso-demo-by-code/src/main/java/cn/iocoder/yudao/ssodemo/controller/AuthController.java
@@ -10,8 +10,8 @@ import org.springframework.web.bind.annotation.RequestMapping; @@ -10,8 +10,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
10 import org.springframework.web.bind.annotation.RequestParam; 10 import org.springframework.web.bind.annotation.RequestParam;
11 import org.springframework.web.bind.annotation.RestController; 11 import org.springframework.web.bind.annotation.RestController;
12 12
13 -import javax.annotation.Resource;  
14 -import javax.servlet.http.HttpServletRequest; 13 +import jakarta.annotation.Resource;
  14 +import jakarta.servlet.http.HttpServletRequest;
15 15
16 @RestController 16 @RestController
17 @RequestMapping("/auth") 17 @RequestMapping("/auth")
yudao-example/yudao-sso-demo-by-code/src/main/java/cn/iocoder/yudao/ssodemo/controller/UserController.java
@@ -6,7 +6,7 @@ import cn.iocoder.yudao.ssodemo.client.dto.user.UserInfoRespDTO; @@ -6,7 +6,7 @@ import cn.iocoder.yudao.ssodemo.client.dto.user.UserInfoRespDTO;
6 import cn.iocoder.yudao.ssodemo.client.dto.user.UserUpdateReqDTO; 6 import cn.iocoder.yudao.ssodemo.client.dto.user.UserUpdateReqDTO;
7 import org.springframework.web.bind.annotation.*; 7 import org.springframework.web.bind.annotation.*;
8 8
9 -import javax.annotation.Resource; 9 +import jakarta.annotation.Resource;
10 10
11 @RestController 11 @RestController
12 @RequestMapping("/user") 12 @RequestMapping("/user")
yudao-example/yudao-sso-demo-by-code/src/main/java/cn/iocoder/yudao/ssodemo/framework/config/SecurityConfiguration.java
@@ -5,13 +5,15 @@ import cn.iocoder.yudao.ssodemo.framework.core.handler.AccessDeniedHandlerImpl; @@ -5,13 +5,15 @@ import cn.iocoder.yudao.ssodemo.framework.core.handler.AccessDeniedHandlerImpl;
5 import org.springframework.context.annotation.Bean; 5 import org.springframework.context.annotation.Bean;
6 import org.springframework.context.annotation.Configuration; 6 import org.springframework.context.annotation.Configuration;
7 import org.springframework.http.HttpMethod; 7 import org.springframework.http.HttpMethod;
  8 +import org.springframework.security.config.Customizer;
8 import org.springframework.security.config.annotation.web.builders.HttpSecurity; 9 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
9 import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; 10 import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
  11 +import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
10 import org.springframework.security.web.AuthenticationEntryPoint; 12 import org.springframework.security.web.AuthenticationEntryPoint;
11 import org.springframework.security.web.SecurityFilterChain; 13 import org.springframework.security.web.SecurityFilterChain;
12 import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; 14 import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
13 15
14 -import javax.annotation.Resource; 16 +import jakarta.annotation.Resource;
15 17
16 @Configuration(proxyBeanMethods = false) 18 @Configuration(proxyBeanMethods = false)
17 @EnableWebSecurity 19 @EnableWebSecurity
@@ -28,21 +30,25 @@ public class SecurityConfiguration{ @@ -28,21 +30,25 @@ public class SecurityConfiguration{
28 @Bean 30 @Bean
29 protected SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception { 31 protected SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception {
30 // 设置 URL 安全权限 32 // 设置 URL 安全权限
31 - httpSecurity.csrf().disable() // 禁用 CSRF 保护  
32 - .authorizeRequests()  
33 - // 1. 静态资源,可匿名访问  
34 - .antMatchers(HttpMethod.GET, "/*.html", "/**/*.html", "/**/*.css", "/**/*.js").permitAll()  
35 - // 2. 登录相关的接口,可匿名访问  
36 - .antMatchers("/auth/login-by-code").permitAll()  
37 - .antMatchers("/auth/refresh-token").permitAll()  
38 - .antMatchers("/auth/logout").permitAll()  
39 - // last. 兜底规则,必须认证  
40 - .and().authorizeRequests()  
41 - .anyRequest().authenticated();  
42 -  
43 - // 设置处理器  
44 - httpSecurity.exceptionHandling().accessDeniedHandler(accessDeniedHandler)  
45 - .authenticationEntryPoint(authenticationEntryPoint); 33 + httpSecurity
  34 + // 开启跨域
  35 + .cors(Customizer.withDefaults())
  36 + // CSRF 禁用,因为不使用 Session
  37 + .csrf(AbstractHttpConfigurer::disable)
  38 + // 一堆自定义的 Spring Security 处理器
  39 + .exceptionHandling(c -> c.authenticationEntryPoint(authenticationEntryPoint)
  40 + .accessDeniedHandler(accessDeniedHandler));
  41 +
  42 + // 设置每个请求的权限
  43 + httpSecurity.authorizeHttpRequests(c -> c
  44 + // 1. 静态资源,可匿名访问
  45 + .requestMatchers(HttpMethod.GET, "/*.html", "/*.html", "/*.css", "/*.js").permitAll()
  46 + // 2. 登录相关的接口,可匿名访问
  47 + .requestMatchers("/auth/login-by-code").permitAll()
  48 + .requestMatchers("/auth/refresh-token").permitAll()
  49 + .requestMatchers("/auth/logout").permitAll())
  50 + // 3. 兜底规则,必须认证
  51 + .authorizeHttpRequests(c -> c.anyRequest().authenticated());
46 52
47 // 添加 Token Filter 53 // 添加 Token Filter
48 httpSecurity.addFilterBefore(tokenAuthenticationFilter, UsernamePasswordAuthenticationFilter.class); 54 httpSecurity.addFilterBefore(tokenAuthenticationFilter, UsernamePasswordAuthenticationFilter.class);
yudao-example/yudao-sso-demo-by-code/src/main/java/cn/iocoder/yudao/ssodemo/framework/core/filter/TokenAuthenticationFilter.java
@@ -9,11 +9,11 @@ import org.springframework.stereotype.Component; @@ -9,11 +9,11 @@ import org.springframework.stereotype.Component;
9 import org.springframework.util.StringUtils; 9 import org.springframework.util.StringUtils;
10 import org.springframework.web.filter.OncePerRequestFilter; 10 import org.springframework.web.filter.OncePerRequestFilter;
11 11
12 -import javax.annotation.Resource;  
13 -import javax.servlet.FilterChain;  
14 -import javax.servlet.ServletException;  
15 -import javax.servlet.http.HttpServletRequest;  
16 -import javax.servlet.http.HttpServletResponse; 12 +import jakarta.annotation.Resource;
  13 +import jakarta.servlet.FilterChain;
  14 +import jakarta.servlet.ServletException;
  15 +import jakarta.servlet.http.HttpServletRequest;
  16 +import jakarta.servlet.http.HttpServletResponse;
17 import java.io.IOException; 17 import java.io.IOException;
18 18
19 /** 19 /**
yudao-example/yudao-sso-demo-by-code/src/main/java/cn/iocoder/yudao/ssodemo/framework/core/handler/AccessDeniedHandlerImpl.java
@@ -10,10 +10,10 @@ import org.springframework.security.web.access.AccessDeniedHandler; @@ -10,10 +10,10 @@ import org.springframework.security.web.access.AccessDeniedHandler;
10 import org.springframework.security.web.access.ExceptionTranslationFilter; 10 import org.springframework.security.web.access.ExceptionTranslationFilter;
11 import org.springframework.stereotype.Component; 11 import org.springframework.stereotype.Component;
12 12
13 -import javax.servlet.FilterChain;  
14 -import javax.servlet.ServletException;  
15 -import javax.servlet.http.HttpServletRequest;  
16 -import javax.servlet.http.HttpServletResponse; 13 +import jakarta.servlet.FilterChain;
  14 +import jakarta.servlet.ServletException;
  15 +import jakarta.servlet.http.HttpServletRequest;
  16 +import jakarta.servlet.http.HttpServletResponse;
17 import java.io.IOException; 17 import java.io.IOException;
18 18
19 /** 19 /**
yudao-example/yudao-sso-demo-by-code/src/main/java/cn/iocoder/yudao/ssodemo/framework/core/handler/AuthenticationEntryPointImpl.java
@@ -9,9 +9,9 @@ import org.springframework.security.web.AuthenticationEntryPoint; @@ -9,9 +9,9 @@ import org.springframework.security.web.AuthenticationEntryPoint;
9 import org.springframework.security.web.access.ExceptionTranslationFilter; 9 import org.springframework.security.web.access.ExceptionTranslationFilter;
10 import org.springframework.stereotype.Component; 10 import org.springframework.stereotype.Component;
11 11
12 -import javax.servlet.FilterChain;  
13 -import javax.servlet.http.HttpServletRequest;  
14 -import javax.servlet.http.HttpServletResponse; 12 +import jakarta.servlet.FilterChain;
  13 +import jakarta.servlet.http.HttpServletRequest;
  14 +import jakarta.servlet.http.HttpServletResponse;
15 15
16 /** 16 /**
17 * 访问一个需要认证的 URL 资源,但是此时自己尚未认证(登录)的情况下,返回 {@link GlobalErrorCodeConstants#UNAUTHORIZED} 错误码,从而使前端重定向到登录页 17 * 访问一个需要认证的 URL 资源,但是此时自己尚未认证(登录)的情况下,返回 {@link GlobalErrorCodeConstants#UNAUTHORIZED} 错误码,从而使前端重定向到登录页
yudao-example/yudao-sso-demo-by-code/src/main/java/cn/iocoder/yudao/ssodemo/framework/core/util/SecurityUtils.java
@@ -9,7 +9,7 @@ import org.springframework.security.core.context.SecurityContextHolder; @@ -9,7 +9,7 @@ import org.springframework.security.core.context.SecurityContextHolder;
9 import org.springframework.security.web.authentication.WebAuthenticationDetailsSource; 9 import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;
10 import org.springframework.util.StringUtils; 10 import org.springframework.util.StringUtils;
11 11
12 -import javax.servlet.http.HttpServletRequest; 12 +import jakarta.servlet.http.HttpServletRequest;
13 import java.util.Collections; 13 import java.util.Collections;
14 14
15 /** 15 /**
yudao-example/yudao-sso-demo-by-code/src/main/java/cn/iocoder/yudao/ssodemo/framework/core/util/ServletUtils.java
1 package cn.iocoder.yudao.ssodemo.framework.core.util; 1 package cn.iocoder.yudao.ssodemo.framework.core.util;
2 2
  3 +import cn.hutool.extra.servlet.JakartaServletUtil;
3 import cn.hutool.extra.servlet.ServletUtil; 4 import cn.hutool.extra.servlet.ServletUtil;
4 import cn.hutool.json.JSONUtil; 5 import cn.hutool.json.JSONUtil;
5 import org.springframework.http.MediaType; 6 import org.springframework.http.MediaType;
6 7
7 -import javax.servlet.http.HttpServletResponse; 8 +import jakarta.servlet.http.HttpServletResponse;
8 9
9 /** 10 /**
10 * 客户端工具类 11 * 客户端工具类
@@ -22,11 +23,11 @@ public class ServletUtils { @@ -22,11 +23,11 @@ public class ServletUtils {
22 @SuppressWarnings("deprecation") // 必须使用 APPLICATION_JSON_UTF8_VALUE,否则会乱码 23 @SuppressWarnings("deprecation") // 必须使用 APPLICATION_JSON_UTF8_VALUE,否则会乱码
23 public static void writeJSON(HttpServletResponse response, Object object) { 24 public static void writeJSON(HttpServletResponse response, Object object) {
24 String content = JSONUtil.toJsonStr(object); 25 String content = JSONUtil.toJsonStr(object);
25 - ServletUtil.write(response, content, MediaType.APPLICATION_JSON_UTF8_VALUE); 26 + JakartaServletUtil.write(response, content, MediaType.APPLICATION_JSON_UTF8_VALUE);
26 } 27 }
27 28
28 public static void write(HttpServletResponse response, String text, String contentType) { 29 public static void write(HttpServletResponse response, String text, String contentType) {
29 - ServletUtil.write(response, text, contentType); 30 + JakartaServletUtil.write(response, text, contentType);
30 } 31 }
31 32
32 } 33 }
yudao-example/yudao-sso-demo-by-password/pom.xml
@@ -17,11 +17,11 @@ @@ -17,11 +17,11 @@
17 17
18 <properties> 18 <properties>
19 <!-- Maven 相关 --> 19 <!-- Maven 相关 -->
20 - <maven.compiler.source>8</maven.compiler.source>  
21 - <maven.compiler.target>8</maven.compiler.target> 20 + <maven.compiler.source>21</maven.compiler.source>
  21 + <maven.compiler.target>21</maven.compiler.target>
22 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 22 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
23 <!-- 统一依赖管理 --> 23 <!-- 统一依赖管理 -->
24 - <spring.boot.version>2.7.17</spring.boot.version> 24 + <spring.boot.version>3.2.0</spring.boot.version>
25 </properties> 25 </properties>
26 26
27 <dependencyManagement> 27 <dependencyManagement>
yudao-example/yudao-sso-demo-by-password/src/main/java/cn/iocoder/yudao/ssodemo/controller/AuthController.java
@@ -10,8 +10,8 @@ import org.springframework.web.bind.annotation.RequestMapping; @@ -10,8 +10,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
10 import org.springframework.web.bind.annotation.RequestParam; 10 import org.springframework.web.bind.annotation.RequestParam;
11 import org.springframework.web.bind.annotation.RestController; 11 import org.springframework.web.bind.annotation.RestController;
12 12
13 -import javax.annotation.Resource;  
14 -import javax.servlet.http.HttpServletRequest; 13 +import jakarta.annotation.Resource;
  14 +import jakarta.servlet.http.HttpServletRequest;
15 15
16 @RestController 16 @RestController
17 @RequestMapping("/auth") 17 @RequestMapping("/auth")
yudao-example/yudao-sso-demo-by-password/src/main/java/cn/iocoder/yudao/ssodemo/controller/UserController.java
@@ -6,7 +6,7 @@ import cn.iocoder.yudao.ssodemo.client.dto.user.UserInfoRespDTO; @@ -6,7 +6,7 @@ import cn.iocoder.yudao.ssodemo.client.dto.user.UserInfoRespDTO;
6 import cn.iocoder.yudao.ssodemo.client.dto.user.UserUpdateReqDTO; 6 import cn.iocoder.yudao.ssodemo.client.dto.user.UserUpdateReqDTO;
7 import org.springframework.web.bind.annotation.*; 7 import org.springframework.web.bind.annotation.*;
8 8
9 -import javax.annotation.Resource; 9 +import jakarta.annotation.Resource;
10 10
11 @RestController 11 @RestController
12 @RequestMapping("/user") 12 @RequestMapping("/user")
yudao-example/yudao-sso-demo-by-password/src/main/java/cn/iocoder/yudao/ssodemo/framework/config/SecurityConfiguration.java
@@ -5,13 +5,15 @@ import cn.iocoder.yudao.ssodemo.framework.core.handler.AccessDeniedHandlerImpl; @@ -5,13 +5,15 @@ import cn.iocoder.yudao.ssodemo.framework.core.handler.AccessDeniedHandlerImpl;
5 import org.springframework.context.annotation.Bean; 5 import org.springframework.context.annotation.Bean;
6 import org.springframework.context.annotation.Configuration; 6 import org.springframework.context.annotation.Configuration;
7 import org.springframework.http.HttpMethod; 7 import org.springframework.http.HttpMethod;
  8 +import org.springframework.security.config.Customizer;
8 import org.springframework.security.config.annotation.web.builders.HttpSecurity; 9 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
9 import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; 10 import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
  11 +import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
10 import org.springframework.security.web.AuthenticationEntryPoint; 12 import org.springframework.security.web.AuthenticationEntryPoint;
11 import org.springframework.security.web.SecurityFilterChain; 13 import org.springframework.security.web.SecurityFilterChain;
12 import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; 14 import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
13 15
14 -import javax.annotation.Resource; 16 +import jakarta.annotation.Resource;
15 17
16 @Configuration(proxyBeanMethods = false) 18 @Configuration(proxyBeanMethods = false)
17 @EnableWebSecurity 19 @EnableWebSecurity
@@ -28,21 +30,25 @@ public class SecurityConfiguration { @@ -28,21 +30,25 @@ public class SecurityConfiguration {
28 @Bean 30 @Bean
29 protected SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception { 31 protected SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Exception {
30 // 设置 URL 安全权限 32 // 设置 URL 安全权限
31 - httpSecurity.csrf().disable() // 禁用 CSRF 保护  
32 - .authorizeRequests() 33 + httpSecurity
  34 + // 开启跨域
  35 + .cors(Customizer.withDefaults())
  36 + // CSRF 禁用,因为不使用 Session
  37 + .csrf(AbstractHttpConfigurer::disable)
  38 + // 一堆自定义的 Spring Security 处理器
  39 + .exceptionHandling(c -> c.authenticationEntryPoint(authenticationEntryPoint)
  40 + .accessDeniedHandler(accessDeniedHandler));
  41 +
  42 + // 设置每个请求的权限
  43 + httpSecurity.authorizeHttpRequests(c -> c
33 // 1. 静态资源,可匿名访问 44 // 1. 静态资源,可匿名访问
34 - .antMatchers(HttpMethod.GET, "/*.html", "/**/*.html", "/**/*.css", "/**/*.js").permitAll() 45 + .requestMatchers(HttpMethod.GET, "/*.html", "/*.html", "/*.css", "/*.js").permitAll()
35 // 2. 登录相关的接口,可匿名访问 46 // 2. 登录相关的接口,可匿名访问
36 - .antMatchers("/auth/login-by-code").permitAll()  
37 - .antMatchers("/auth/refresh-token").permitAll()  
38 - .antMatchers("/auth/logout").permitAll()  
39 - // last. 兜底规则,必须认证  
40 - .and().authorizeRequests()  
41 - .anyRequest().authenticated();  
42 -  
43 - // 设置处理器  
44 - httpSecurity.exceptionHandling().accessDeniedHandler(accessDeniedHandler)  
45 - .authenticationEntryPoint(authenticationEntryPoint); 47 + .requestMatchers("/auth/login-by-code").permitAll()
  48 + .requestMatchers("/auth/refresh-token").permitAll()
  49 + .requestMatchers("/auth/logout").permitAll())
  50 + // 3. 兜底规则,必须认证
  51 + .authorizeHttpRequests(c -> c.anyRequest().authenticated());
46 52
47 // 添加 Token Filter 53 // 添加 Token Filter
48 httpSecurity.addFilterBefore(tokenAuthenticationFilter, UsernamePasswordAuthenticationFilter.class); 54 httpSecurity.addFilterBefore(tokenAuthenticationFilter, UsernamePasswordAuthenticationFilter.class);
yudao-example/yudao-sso-demo-by-password/src/main/java/cn/iocoder/yudao/ssodemo/framework/core/filter/TokenAuthenticationFilter.java
@@ -9,11 +9,11 @@ import org.springframework.stereotype.Component; @@ -9,11 +9,11 @@ import org.springframework.stereotype.Component;
9 import org.springframework.util.StringUtils; 9 import org.springframework.util.StringUtils;
10 import org.springframework.web.filter.OncePerRequestFilter; 10 import org.springframework.web.filter.OncePerRequestFilter;
11 11
12 -import javax.annotation.Resource;  
13 -import javax.servlet.FilterChain;  
14 -import javax.servlet.ServletException;  
15 -import javax.servlet.http.HttpServletRequest;  
16 -import javax.servlet.http.HttpServletResponse; 12 +import jakarta.annotation.Resource;
  13 +import jakarta.servlet.FilterChain;
  14 +import jakarta.servlet.ServletException;
  15 +import jakarta.servlet.http.HttpServletRequest;
  16 +import jakarta.servlet.http.HttpServletResponse;
17 import java.io.IOException; 17 import java.io.IOException;
18 18
19 /** 19 /**
yudao-example/yudao-sso-demo-by-password/src/main/java/cn/iocoder/yudao/ssodemo/framework/core/handler/AccessDeniedHandlerImpl.java
@@ -10,10 +10,10 @@ import org.springframework.security.web.access.AccessDeniedHandler; @@ -10,10 +10,10 @@ import org.springframework.security.web.access.AccessDeniedHandler;
10 import org.springframework.security.web.access.ExceptionTranslationFilter; 10 import org.springframework.security.web.access.ExceptionTranslationFilter;
11 import org.springframework.stereotype.Component; 11 import org.springframework.stereotype.Component;
12 12
13 -import javax.servlet.FilterChain;  
14 -import javax.servlet.ServletException;  
15 -import javax.servlet.http.HttpServletRequest;  
16 -import javax.servlet.http.HttpServletResponse; 13 +import jakarta.servlet.FilterChain;
  14 +import jakarta.servlet.ServletException;
  15 +import jakarta.servlet.http.HttpServletRequest;
  16 +import jakarta.servlet.http.HttpServletResponse;
17 import java.io.IOException; 17 import java.io.IOException;
18 18
19 /** 19 /**
yudao-example/yudao-sso-demo-by-password/src/main/java/cn/iocoder/yudao/ssodemo/framework/core/handler/AuthenticationEntryPointImpl.java
@@ -9,9 +9,9 @@ import org.springframework.security.web.AuthenticationEntryPoint; @@ -9,9 +9,9 @@ import org.springframework.security.web.AuthenticationEntryPoint;
9 import org.springframework.security.web.access.ExceptionTranslationFilter; 9 import org.springframework.security.web.access.ExceptionTranslationFilter;
10 import org.springframework.stereotype.Component; 10 import org.springframework.stereotype.Component;
11 11
12 -import javax.servlet.FilterChain;  
13 -import javax.servlet.http.HttpServletRequest;  
14 -import javax.servlet.http.HttpServletResponse; 12 +import jakarta.servlet.FilterChain;
  13 +import jakarta.servlet.http.HttpServletRequest;
  14 +import jakarta.servlet.http.HttpServletResponse;
15 15
16 /** 16 /**
17 * 访问一个需要认证的 URL 资源,但是此时自己尚未认证(登录)的情况下,返回 {@link GlobalErrorCodeConstants#UNAUTHORIZED} 错误码,从而使前端重定向到登录页 17 * 访问一个需要认证的 URL 资源,但是此时自己尚未认证(登录)的情况下,返回 {@link GlobalErrorCodeConstants#UNAUTHORIZED} 错误码,从而使前端重定向到登录页
yudao-example/yudao-sso-demo-by-password/src/main/java/cn/iocoder/yudao/ssodemo/framework/core/util/SecurityUtils.java
@@ -9,7 +9,7 @@ import org.springframework.security.core.context.SecurityContextHolder; @@ -9,7 +9,7 @@ import org.springframework.security.core.context.SecurityContextHolder;
9 import org.springframework.security.web.authentication.WebAuthenticationDetailsSource; 9 import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;
10 import org.springframework.util.StringUtils; 10 import org.springframework.util.StringUtils;
11 11
12 -import javax.servlet.http.HttpServletRequest; 12 +import jakarta.servlet.http.HttpServletRequest;
13 import java.util.Collections; 13 import java.util.Collections;
14 14
15 /** 15 /**
yudao-example/yudao-sso-demo-by-password/src/main/java/cn/iocoder/yudao/ssodemo/framework/core/util/ServletUtils.java
1 package cn.iocoder.yudao.ssodemo.framework.core.util; 1 package cn.iocoder.yudao.ssodemo.framework.core.util;
2 2
  3 +import cn.hutool.extra.servlet.JakartaServletUtil;
3 import cn.hutool.extra.servlet.ServletUtil; 4 import cn.hutool.extra.servlet.ServletUtil;
4 import cn.hutool.json.JSONUtil; 5 import cn.hutool.json.JSONUtil;
5 import org.springframework.http.MediaType; 6 import org.springframework.http.MediaType;
6 7
7 -import javax.servlet.http.HttpServletResponse; 8 +import jakarta.servlet.http.HttpServletResponse;
8 9
9 /** 10 /**
10 * 客户端工具类 11 * 客户端工具类
@@ -22,11 +23,11 @@ public class ServletUtils { @@ -22,11 +23,11 @@ public class ServletUtils {
22 @SuppressWarnings("deprecation") // 必须使用 APPLICATION_JSON_UTF8_VALUE,否则会乱码 23 @SuppressWarnings("deprecation") // 必须使用 APPLICATION_JSON_UTF8_VALUE,否则会乱码
23 public static void writeJSON(HttpServletResponse response, Object object) { 24 public static void writeJSON(HttpServletResponse response, Object object) {
24 String content = JSONUtil.toJsonStr(object); 25 String content = JSONUtil.toJsonStr(object);
25 - ServletUtil.write(response, content, MediaType.APPLICATION_JSON_UTF8_VALUE); 26 + JakartaServletUtil.write(response, content, MediaType.APPLICATION_JSON_UTF8_VALUE);
26 } 27 }
27 28
28 public static void write(HttpServletResponse response, String text, String contentType) { 29 public static void write(HttpServletResponse response, String text, String contentType) {
29 - ServletUtil.write(response, text, contentType); 30 + JakartaServletUtil.write(response, text, contentType);
30 } 31 }
31 32
32 } 33 }
yudao-framework/yudao-common/pom.xml
@@ -60,7 +60,7 @@ @@ -60,7 +60,7 @@
60 60
61 <dependency> 61 <dependency>
62 <groupId>org.springdoc</groupId> 62 <groupId>org.springdoc</groupId>
63 - <artifactId>springdoc-openapi-ui</artifactId> 63 + <artifactId>springdoc-openapi-starter-webmvc-api</artifactId>
64 <scope>provided</scope> <!-- 设置为 provided,主要是 PageParam 使用到 --> 64 <scope>provided</scope> <!-- 设置为 provided,主要是 PageParam 使用到 -->
65 </dependency> 65 </dependency>
66 66
@@ -127,6 +127,10 @@ @@ -127,6 +127,10 @@
127 <groupId>cn.hutool</groupId> 127 <groupId>cn.hutool</groupId>
128 <artifactId>hutool-all</artifactId> 128 <artifactId>hutool-all</artifactId>
129 </dependency> 129 </dependency>
  130 + <dependency>
  131 + <groupId>org.dromara.hutool</groupId>
  132 + <artifactId>hutool-all</artifactId>
  133 + </dependency>
130 134
131 <dependency> 135 <dependency>
132 <groupId>com.alibaba</groupId> 136 <groupId>com.alibaba</groupId>
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/pojo/PageParam.java
@@ -3,9 +3,9 @@ package cn.iocoder.yudao.framework.common.pojo; @@ -3,9 +3,9 @@ package cn.iocoder.yudao.framework.common.pojo;
3 import io.swagger.v3.oas.annotations.media.Schema; 3 import io.swagger.v3.oas.annotations.media.Schema;
4 import lombok.Data; 4 import lombok.Data;
5 5
6 -import javax.validation.constraints.Min;  
7 -import javax.validation.constraints.Max;  
8 -import javax.validation.constraints.NotNull; 6 +import jakarta.validation.constraints.Min;
  7 +import jakarta.validation.constraints.Max;
  8 +import jakarta.validation.constraints.NotNull;
9 import java.io.Serializable; 9 import java.io.Serializable;
10 10
11 @Schema(description="分页参数") 11 @Schema(description="分页参数")
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/http/HttpUtils.java
@@ -9,7 +9,7 @@ import org.springframework.util.StringUtils; @@ -9,7 +9,7 @@ import org.springframework.util.StringUtils;
9 import org.springframework.web.util.UriComponents; 9 import org.springframework.web.util.UriComponents;
10 import org.springframework.web.util.UriComponentsBuilder; 10 import org.springframework.web.util.UriComponentsBuilder;
11 11
12 -import javax.servlet.http.HttpServletRequest; 12 +import jakarta.servlet.http.HttpServletRequest;
13 import java.net.URI; 13 import java.net.URI;
14 import java.nio.charset.Charset; 14 import java.nio.charset.Charset;
15 import java.util.Map; 15 import java.util.Map;
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/servlet/ServletUtils.java
@@ -2,16 +2,16 @@ package cn.iocoder.yudao.framework.common.util.servlet; @@ -2,16 +2,16 @@ package cn.iocoder.yudao.framework.common.util.servlet;
2 2
3 import cn.hutool.core.io.IoUtil; 3 import cn.hutool.core.io.IoUtil;
4 import cn.hutool.core.util.StrUtil; 4 import cn.hutool.core.util.StrUtil;
5 -import cn.hutool.extra.servlet.ServletUtil; 5 +import cn.hutool.extra.servlet.JakartaServletUtil;
6 import cn.iocoder.yudao.framework.common.util.json.JsonUtils; 6 import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
  7 +import jakarta.servlet.ServletRequest;
  8 +import jakarta.servlet.http.HttpServletRequest;
  9 +import jakarta.servlet.http.HttpServletResponse;
7 import org.springframework.http.MediaType; 10 import org.springframework.http.MediaType;
8 import org.springframework.web.context.request.RequestAttributes; 11 import org.springframework.web.context.request.RequestAttributes;
9 import org.springframework.web.context.request.RequestContextHolder; 12 import org.springframework.web.context.request.RequestContextHolder;
10 import org.springframework.web.context.request.ServletRequestAttributes; 13 import org.springframework.web.context.request.ServletRequestAttributes;
11 14
12 -import javax.servlet.ServletRequest;  
13 -import javax.servlet.http.HttpServletRequest;  
14 -import javax.servlet.http.HttpServletResponse;  
15 import java.io.IOException; 15 import java.io.IOException;
16 import java.net.URLEncoder; 16 import java.net.URLEncoder;
17 import java.util.Map; 17 import java.util.Map;
@@ -32,7 +32,7 @@ public class ServletUtils { @@ -32,7 +32,7 @@ public class ServletUtils {
32 @SuppressWarnings("deprecation") // 必须使用 APPLICATION_JSON_UTF8_VALUE,否则会乱码 32 @SuppressWarnings("deprecation") // 必须使用 APPLICATION_JSON_UTF8_VALUE,否则会乱码
33 public static void writeJSON(HttpServletResponse response, Object object) { 33 public static void writeJSON(HttpServletResponse response, Object object) {
34 String content = JsonUtils.toJsonString(object); 34 String content = JsonUtils.toJsonString(object);
35 - ServletUtil.write(response, content, MediaType.APPLICATION_JSON_UTF8_VALUE); 35 + JakartaServletUtil.write(response, content, MediaType.APPLICATION_JSON_UTF8_VALUE);
36 } 36 }
37 37
38 /** 38 /**
@@ -85,7 +85,7 @@ public class ServletUtils { @@ -85,7 +85,7 @@ public class ServletUtils {
85 if (request == null) { 85 if (request == null) {
86 return null; 86 return null;
87 } 87 }
88 - return ServletUtil.getClientIP(request); 88 + return JakartaServletUtil.getClientIP(request);
89 } 89 }
90 90
91 // TODO @疯狂:terminal 还是从 ServletUtils 里拿,更容易全局治理; 91 // TODO @疯狂:terminal 还是从 ServletUtils 里拿,更容易全局治理;
@@ -95,19 +95,19 @@ public class ServletUtils { @@ -95,19 +95,19 @@ public class ServletUtils {
95 } 95 }
96 96
97 public static String getBody(HttpServletRequest request) { 97 public static String getBody(HttpServletRequest request) {
98 - return ServletUtil.getBody(request); 98 + return JakartaServletUtil.getBody(request);
99 } 99 }
100 100
101 public static byte[] getBodyBytes(HttpServletRequest request) { 101 public static byte[] getBodyBytes(HttpServletRequest request) {
102 - return ServletUtil.getBodyBytes(request); 102 + return JakartaServletUtil.getBodyBytes(request);
103 } 103 }
104 104
105 public static String getClientIP(HttpServletRequest request) { 105 public static String getClientIP(HttpServletRequest request) {
106 - return ServletUtil.getClientIP(request); 106 + return JakartaServletUtil.getClientIP(request);
107 } 107 }
108 108
109 public static Map<String, String> getParamMap(HttpServletRequest request) { 109 public static Map<String, String> getParamMap(HttpServletRequest request) {
110 - return ServletUtil.getParamMap(request); 110 + return JakartaServletUtil.getParamMap(request);
111 } 111 }
112 112
113 } 113 }
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/util/validation/ValidationUtils.java
@@ -4,10 +4,10 @@ import cn.hutool.core.collection.CollUtil; @@ -4,10 +4,10 @@ import cn.hutool.core.collection.CollUtil;
4 import cn.hutool.core.lang.Assert; 4 import cn.hutool.core.lang.Assert;
5 import org.springframework.util.StringUtils; 5 import org.springframework.util.StringUtils;
6 6
7 -import javax.validation.ConstraintViolation;  
8 -import javax.validation.ConstraintViolationException;  
9 -import javax.validation.Validation;  
10 -import javax.validation.Validator; 7 +import jakarta.validation.ConstraintViolation;
  8 +import jakarta.validation.ConstraintViolationException;
  9 +import jakarta.validation.Validation;
  10 +import jakarta.validation.Validator;
11 import java.util.Set; 11 import java.util.Set;
12 import java.util.regex.Pattern; 12 import java.util.regex.Pattern;
13 13
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/validation/InEnum.java
@@ -2,8 +2,8 @@ package cn.iocoder.yudao.framework.common.validation; @@ -2,8 +2,8 @@ package cn.iocoder.yudao.framework.common.validation;
2 2
3 import cn.iocoder.yudao.framework.common.core.IntArrayValuable; 3 import cn.iocoder.yudao.framework.common.core.IntArrayValuable;
4 4
5 -import javax.validation.Constraint;  
6 -import javax.validation.Payload; 5 +import jakarta.validation.Constraint;
  6 +import jakarta.validation.Payload;
7 import java.lang.annotation.*; 7 import java.lang.annotation.*;
8 8
9 @Target({ 9 @Target({
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/validation/InEnumCollectionValidator.java
@@ -3,8 +3,8 @@ package cn.iocoder.yudao.framework.common.validation; @@ -3,8 +3,8 @@ package cn.iocoder.yudao.framework.common.validation;
3 import cn.hutool.core.collection.CollUtil; 3 import cn.hutool.core.collection.CollUtil;
4 import cn.iocoder.yudao.framework.common.core.IntArrayValuable; 4 import cn.iocoder.yudao.framework.common.core.IntArrayValuable;
5 5
6 -import javax.validation.ConstraintValidator;  
7 -import javax.validation.ConstraintValidatorContext; 6 +import jakarta.validation.ConstraintValidator;
  7 +import jakarta.validation.ConstraintValidatorContext;
8 import java.util.Arrays; 8 import java.util.Arrays;
9 import java.util.Collection; 9 import java.util.Collection;
10 import java.util.Collections; 10 import java.util.Collections;
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/validation/InEnumValidator.java
@@ -2,8 +2,8 @@ package cn.iocoder.yudao.framework.common.validation; @@ -2,8 +2,8 @@ package cn.iocoder.yudao.framework.common.validation;
2 2
3 import cn.iocoder.yudao.framework.common.core.IntArrayValuable; 3 import cn.iocoder.yudao.framework.common.core.IntArrayValuable;
4 4
5 -import javax.validation.ConstraintValidator;  
6 -import javax.validation.ConstraintValidatorContext; 5 +import jakarta.validation.ConstraintValidator;
  6 +import jakarta.validation.ConstraintValidatorContext;
7 import java.util.Arrays; 7 import java.util.Arrays;
8 import java.util.Collections; 8 import java.util.Collections;
9 import java.util.List; 9 import java.util.List;
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/validation/Mobile.java
1 package cn.iocoder.yudao.framework.common.validation; 1 package cn.iocoder.yudao.framework.common.validation;
2 2
3 -import javax.validation.Constraint;  
4 -import javax.validation.Payload; 3 +import jakarta.validation.Constraint;
  4 +import jakarta.validation.Payload;
5 import java.lang.annotation.*; 5 import java.lang.annotation.*;
6 6
7 @Target({ 7 @Target({
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/validation/MobileValidator.java
@@ -3,8 +3,8 @@ package cn.iocoder.yudao.framework.common.validation; @@ -3,8 +3,8 @@ package cn.iocoder.yudao.framework.common.validation;
3 import cn.hutool.core.util.StrUtil; 3 import cn.hutool.core.util.StrUtil;
4 import cn.iocoder.yudao.framework.common.util.validation.ValidationUtils; 4 import cn.iocoder.yudao.framework.common.util.validation.ValidationUtils;
5 5
6 -import javax.validation.ConstraintValidator;  
7 -import javax.validation.ConstraintValidatorContext; 6 +import jakarta.validation.ConstraintValidator;
  7 +import jakarta.validation.ConstraintValidatorContext;
8 8
9 public class MobileValidator implements ConstraintValidator<Mobile, String> { 9 public class MobileValidator implements ConstraintValidator<Mobile, String> {
10 10
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/validation/Telephone.java
1 package cn.iocoder.yudao.framework.common.validation; 1 package cn.iocoder.yudao.framework.common.validation;
2 2
3 -import javax.validation.Constraint;  
4 -import javax.validation.Payload; 3 +import jakarta.validation.Constraint;
  4 +import jakarta.validation.Payload;
5 import java.lang.annotation.*; 5 import java.lang.annotation.*;
6 6
7 @Target({ 7 @Target({
yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/validation/TelephoneValidator.java
@@ -3,8 +3,8 @@ package cn.iocoder.yudao.framework.common.validation; @@ -3,8 +3,8 @@ package cn.iocoder.yudao.framework.common.validation;
3 import cn.hutool.core.text.CharSequenceUtil; 3 import cn.hutool.core.text.CharSequenceUtil;
4 import cn.hutool.core.util.PhoneUtil; 4 import cn.hutool.core.util.PhoneUtil;
5 5
6 -import javax.validation.ConstraintValidator;  
7 -import javax.validation.ConstraintValidatorContext; 6 +import jakarta.validation.ConstraintValidator;
  7 +import jakarta.validation.ConstraintValidatorContext;
8 8
9 public class TelephoneValidator implements ConstraintValidator<Telephone, String> { 9 public class TelephoneValidator implements ConstraintValidator<Telephone, String> {
10 10
yudao-framework/yudao-spring-boot-starter-biz-error-code/src/main/java/cn/iocoder/yudao/framework/errorcode/config/ErrorCodeProperties.java
@@ -4,7 +4,7 @@ import lombok.Data; @@ -4,7 +4,7 @@ import lombok.Data;
4 import org.springframework.boot.context.properties.ConfigurationProperties; 4 import org.springframework.boot.context.properties.ConfigurationProperties;
5 import org.springframework.validation.annotation.Validated; 5 import org.springframework.validation.annotation.Validated;
6 6
7 -import javax.validation.constraints.NotNull; 7 +import jakarta.validation.constraints.NotNull;
8 import java.util.List; 8 import java.util.List;
9 9
10 /** 10 /**
yudao-framework/yudao-spring-boot-starter-biz-operatelog/src/main/java/cn/iocoder/yudao/framework/operatelog/core/aop/OperateLogAspect.java
@@ -27,9 +27,9 @@ import org.springframework.web.bind.annotation.RequestMapping; @@ -27,9 +27,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
27 import org.springframework.web.bind.annotation.RequestMethod; 27 import org.springframework.web.bind.annotation.RequestMethod;
28 import org.springframework.web.multipart.MultipartFile; 28 import org.springframework.web.multipart.MultipartFile;
29 29
30 -import javax.annotation.Resource;  
31 -import javax.servlet.http.HttpServletRequest;  
32 -import javax.servlet.http.HttpServletResponse; 30 +import jakarta.annotation.Resource;
  31 +import jakarta.servlet.http.HttpServletRequest;
  32 +import jakarta.servlet.http.HttpServletResponse;
33 import java.lang.annotation.Annotation; 33 import java.lang.annotation.Annotation;
34 import java.lang.reflect.Array; 34 import java.lang.reflect.Array;
35 import java.time.LocalDateTime; 35 import java.time.LocalDateTime;
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/PayClientConfig.java
1 package cn.iocoder.yudao.framework.pay.core.client; 1 package cn.iocoder.yudao.framework.pay.core.client;
2 2
3 -import cn.iocoder.yudao.framework.common.util.validation.ValidationUtils;  
4 import com.fasterxml.jackson.annotation.JsonTypeInfo; 3 import com.fasterxml.jackson.annotation.JsonTypeInfo;
5 4
6 -import javax.validation.ConstraintViolation;  
7 -import javax.validation.ConstraintViolationException;  
8 -import javax.validation.Validator;  
9 -import java.util.Set; 5 +import jakarta.validation.Validator;
10 6
11 /** 7 /**
12 * 支付客户端的配置,本质是支付渠道的配置 8 * 支付客户端的配置,本质是支付渠道的配置
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/dto/order/PayOrderUnifiedReqDTO.java
@@ -5,9 +5,9 @@ import lombok.Data; @@ -5,9 +5,9 @@ import lombok.Data;
5 import org.hibernate.validator.constraints.Length; 5 import org.hibernate.validator.constraints.Length;
6 import org.hibernate.validator.constraints.URL; 6 import org.hibernate.validator.constraints.URL;
7 7
8 -import javax.validation.constraints.DecimalMin;  
9 -import javax.validation.constraints.NotEmpty;  
10 -import javax.validation.constraints.NotNull; 8 +import jakarta.validation.constraints.DecimalMin;
  9 +import jakarta.validation.constraints.NotEmpty;
  10 +import jakarta.validation.constraints.NotNull;
11 import java.time.LocalDateTime; 11 import java.time.LocalDateTime;
12 import java.util.Map; 12 import java.util.Map;
13 13
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/dto/refund/PayRefundUnifiedReqDTO.java
@@ -7,9 +7,9 @@ import lombok.NoArgsConstructor; @@ -7,9 +7,9 @@ import lombok.NoArgsConstructor;
7 import lombok.experimental.Accessors; 7 import lombok.experimental.Accessors;
8 import org.hibernate.validator.constraints.URL; 8 import org.hibernate.validator.constraints.URL;
9 9
10 -import javax.validation.constraints.DecimalMin;  
11 -import javax.validation.constraints.NotEmpty;  
12 -import javax.validation.constraints.NotNull; 10 +import jakarta.validation.constraints.DecimalMin;
  11 +import jakarta.validation.constraints.NotEmpty;
  12 +import jakarta.validation.constraints.NotNull;
13 13
14 /** 14 /**
15 * 统一 退款 Request DTO 15 * 统一 退款 Request DTO
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/dto/transfer/PayTransferUnifiedReqDTO.java
@@ -5,10 +5,10 @@ import cn.iocoder.yudao.framework.pay.core.enums.transfer.PayTransferTypeEnum; @@ -5,10 +5,10 @@ import cn.iocoder.yudao.framework.pay.core.enums.transfer.PayTransferTypeEnum;
5 import lombok.Data; 5 import lombok.Data;
6 import org.hibernate.validator.constraints.Length; 6 import org.hibernate.validator.constraints.Length;
7 7
8 -import javax.validation.constraints.Min;  
9 -import javax.validation.constraints.NotBlank;  
10 -import javax.validation.constraints.NotEmpty;  
11 -import javax.validation.constraints.NotNull; 8 +import jakarta.validation.constraints.Min;
  9 +import jakarta.validation.constraints.NotBlank;
  10 +import jakarta.validation.constraints.NotEmpty;
  11 +import jakarta.validation.constraints.NotNull;
12 import java.util.Map; 12 import java.util.Map;
13 13
14 import static cn.iocoder.yudao.framework.pay.core.enums.transfer.PayTransferTypeEnum.*; 14 import static cn.iocoder.yudao.framework.pay.core.enums.transfer.PayTransferTypeEnum.*;
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/NonePayClientConfig.java
@@ -3,7 +3,7 @@ package cn.iocoder.yudao.framework.pay.core.client.impl; @@ -3,7 +3,7 @@ package cn.iocoder.yudao.framework.pay.core.client.impl;
3 import cn.iocoder.yudao.framework.pay.core.client.PayClientConfig; 3 import cn.iocoder.yudao.framework.pay.core.client.PayClientConfig;
4 import lombok.Data; 4 import lombok.Data;
5 5
6 -import javax.validation.Validator; 6 +import jakarta.validation.Validator;
7 7
8 /** 8 /**
9 * 无需任何配置 PayClientConfig 实现类 9 * 无需任何配置 PayClientConfig 实现类
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/alipay/AlipayPayClientConfig.java
@@ -4,11 +4,9 @@ import cn.iocoder.yudao.framework.common.util.validation.ValidationUtils; @@ -4,11 +4,9 @@ import cn.iocoder.yudao.framework.common.util.validation.ValidationUtils;
4 import cn.iocoder.yudao.framework.pay.core.client.PayClientConfig; 4 import cn.iocoder.yudao.framework.pay.core.client.PayClientConfig;
5 import lombok.Data; 5 import lombok.Data;
6 6
7 -import javax.validation.ConstraintViolation;  
8 -import javax.validation.Validator;  
9 -import javax.validation.constraints.NotBlank;  
10 -import javax.validation.constraints.NotNull;  
11 -import java.util.Set; 7 +import jakarta.validation.Validator;
  8 +import jakarta.validation.constraints.NotBlank;
  9 +import jakarta.validation.constraints.NotNull;
12 10
13 /** 11 /**
14 * 支付宝的 PayClientConfig 实现类 12 * 支付宝的 PayClientConfig 实现类
yudao-framework/yudao-spring-boot-starter-biz-pay/src/main/java/cn/iocoder/yudao/framework/pay/core/client/impl/weixin/WxPayClientConfig.java
@@ -5,8 +5,8 @@ import cn.iocoder.yudao.framework.common.util.validation.ValidationUtils; @@ -5,8 +5,8 @@ import cn.iocoder.yudao.framework.common.util.validation.ValidationUtils;
5 import cn.iocoder.yudao.framework.pay.core.client.PayClientConfig; 5 import cn.iocoder.yudao.framework.pay.core.client.PayClientConfig;
6 import lombok.Data; 6 import lombok.Data;
7 7
8 -import javax.validation.Validator;  
9 -import javax.validation.constraints.NotBlank; 8 +import jakarta.validation.Validator;
  9 +import jakarta.validation.constraints.NotBlank;
10 import java.io.FileInputStream; 10 import java.io.FileInputStream;
11 import java.io.FileNotFoundException; 11 import java.io.FileNotFoundException;
12 12
yudao-framework/yudao-spring-boot-starter-biz-pay/src/test/java/cn/iocoder/yudao/framework/pay/core/client/impl/alipay/AbstractAlipayClientTest.java
@@ -24,7 +24,7 @@ import org.junit.jupiter.api.Test; @@ -24,7 +24,7 @@ import org.junit.jupiter.api.Test;
24 import org.mockito.ArgumentMatcher; 24 import org.mockito.ArgumentMatcher;
25 import org.mockito.Mock; 25 import org.mockito.Mock;
26 26
27 -import javax.validation.ConstraintViolationException; 27 +import jakarta.validation.ConstraintViolationException;
28 import java.util.Date; 28 import java.util.Date;
29 29
30 import static cn.iocoder.yudao.framework.pay.core.client.impl.alipay.AlipayPayClientConfig.MODE_PUBLIC_KEY; 30 import static cn.iocoder.yudao.framework.pay.core.client.impl.alipay.AlipayPayClientConfig.MODE_PUBLIC_KEY;
yudao-framework/yudao-spring-boot-starter-biz-sms/src/main/java/cn/iocoder/yudao/framework/sms/core/property/SmsChannelProperties.java
@@ -4,8 +4,8 @@ import cn.iocoder.yudao.framework.sms.core.enums.SmsChannelEnum; @@ -4,8 +4,8 @@ import cn.iocoder.yudao.framework.sms.core.enums.SmsChannelEnum;
4 import lombok.Data; 4 import lombok.Data;
5 import org.springframework.validation.annotation.Validated; 5 import org.springframework.validation.annotation.Validated;
6 6
7 -import javax.validation.constraints.NotEmpty;  
8 -import javax.validation.constraints.NotNull; 7 +import jakarta.validation.constraints.NotEmpty;
  8 +import jakarta.validation.constraints.NotNull;
9 9
10 /** 10 /**
11 * 短信渠道配置类 11 * 短信渠道配置类
yudao-framework/yudao-spring-boot-starter-biz-tenant/src/main/java/cn/iocoder/yudao/framework/tenant/core/security/TenantSecurityWebFilter.java
@@ -15,10 +15,10 @@ import cn.iocoder.yudao.framework.web.core.handler.GlobalExceptionHandler; @@ -15,10 +15,10 @@ import cn.iocoder.yudao.framework.web.core.handler.GlobalExceptionHandler;
15 import lombok.extern.slf4j.Slf4j; 15 import lombok.extern.slf4j.Slf4j;
16 import org.springframework.util.AntPathMatcher; 16 import org.springframework.util.AntPathMatcher;
17 17
18 -import javax.servlet.FilterChain;  
19 -import javax.servlet.ServletException;  
20 -import javax.servlet.http.HttpServletRequest;  
21 -import javax.servlet.http.HttpServletResponse; 18 +import jakarta.servlet.FilterChain;
  19 +import jakarta.servlet.ServletException;
  20 +import jakarta.servlet.http.HttpServletRequest;
  21 +import jakarta.servlet.http.HttpServletResponse;
22 import java.io.IOException; 22 import java.io.IOException;
23 import java.util.Objects; 23 import java.util.Objects;
24 24
yudao-framework/yudao-spring-boot-starter-biz-tenant/src/main/java/cn/iocoder/yudao/framework/tenant/core/web/TenantContextWebFilter.java
@@ -4,10 +4,10 @@ import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder; @@ -4,10 +4,10 @@ import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
4 import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils; 4 import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils;
5 import org.springframework.web.filter.OncePerRequestFilter; 5 import org.springframework.web.filter.OncePerRequestFilter;
6 6
7 -import javax.servlet.FilterChain;  
8 -import javax.servlet.ServletException;  
9 -import javax.servlet.http.HttpServletRequest;  
10 -import javax.servlet.http.HttpServletResponse; 7 +import jakarta.servlet.FilterChain;
  8 +import jakarta.servlet.ServletException;
  9 +import jakarta.servlet.http.HttpServletRequest;
  10 +import jakarta.servlet.http.HttpServletResponse;
11 import java.io.IOException; 11 import java.io.IOException;
12 12
13 /** 13 /**
yudao-framework/yudao-spring-boot-starter-biz-tenant/src/main/java/org/springframework/messaging/handler/invocation/InvocableHandlerMethod.java
1 /* 1 /*
2 - * Copyright 2002-2021 the original author or authors. 2 + * Copyright 2002-2023 the original author or authors.
3 * 3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License. 5 * you may not use this file except in compliance with the License.
@@ -16,6 +16,11 @@ @@ -16,6 +16,11 @@
16 16
17 package org.springframework.messaging.handler.invocation; 17 package org.springframework.messaging.handler.invocation;
18 18
  19 +import java.lang.reflect.InvocationTargetException;
  20 +import java.lang.reflect.Method;
  21 +import java.lang.reflect.Type;
  22 +import java.util.Arrays;
  23 +
19 import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder; 24 import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
20 import cn.iocoder.yudao.framework.tenant.core.util.TenantUtils; 25 import cn.iocoder.yudao.framework.tenant.core.util.TenantUtils;
21 import org.springframework.core.DefaultParameterNameDiscoverer; 26 import org.springframework.core.DefaultParameterNameDiscoverer;
@@ -27,11 +32,6 @@ import org.springframework.messaging.Message; @@ -27,11 +32,6 @@ import org.springframework.messaging.Message;
27 import org.springframework.messaging.handler.HandlerMethod; 32 import org.springframework.messaging.handler.HandlerMethod;
28 import org.springframework.util.ObjectUtils; 33 import org.springframework.util.ObjectUtils;
29 34
30 -import java.lang.reflect.InvocationTargetException;  
31 -import java.lang.reflect.Method;  
32 -import java.lang.reflect.Type;  
33 -import java.util.Arrays;  
34 -  
35 import static cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils.HEADER_TENANT_ID; 35 import static cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils.HEADER_TENANT_ID;
36 36
37 /** 37 /**
@@ -50,10 +50,12 @@ public class InvocableHandlerMethod extends HandlerMethod { @@ -50,10 +50,12 @@ public class InvocableHandlerMethod extends HandlerMethod {
50 50
51 private static final Object[] EMPTY_ARGS = new Object[0]; 51 private static final Object[] EMPTY_ARGS = new Object[0];
52 52
  53 +
53 private HandlerMethodArgumentResolverComposite resolvers = new HandlerMethodArgumentResolverComposite(); 54 private HandlerMethodArgumentResolverComposite resolvers = new HandlerMethodArgumentResolverComposite();
54 55
55 private ParameterNameDiscoverer parameterNameDiscoverer = new DefaultParameterNameDiscoverer(); 56 private ParameterNameDiscoverer parameterNameDiscoverer = new DefaultParameterNameDiscoverer();
56 57
  58 +
57 /** 59 /**
58 * Create an instance from a {@code HandlerMethod}. 60 * Create an instance from a {@code HandlerMethod}.
59 */ 61 */
@@ -81,6 +83,7 @@ public class InvocableHandlerMethod extends HandlerMethod { @@ -81,6 +83,7 @@ public class InvocableHandlerMethod extends HandlerMethod {
81 super(bean, methodName, parameterTypes); 83 super(bean, methodName, parameterTypes);
82 } 84 }
83 85
  86 +
84 /** 87 /**
85 * Set {@link HandlerMethodArgumentResolver HandlerMethodArgumentResolvers} to use for resolving method argument values. 88 * Set {@link HandlerMethodArgumentResolver HandlerMethodArgumentResolvers} to use for resolving method argument values.
86 */ 89 */
@@ -91,12 +94,13 @@ public class InvocableHandlerMethod extends HandlerMethod { @@ -91,12 +94,13 @@ public class InvocableHandlerMethod extends HandlerMethod {
91 /** 94 /**
92 * Set the ParameterNameDiscoverer for resolving parameter names when needed 95 * Set the ParameterNameDiscoverer for resolving parameter names when needed
93 * (e.g. default request attribute name). 96 * (e.g. default request attribute name).
94 - * <p>Default is a {@link DefaultParameterNameDiscoverer}. 97 + * <p>Default is a {@link org.springframework.core.DefaultParameterNameDiscoverer}.
95 */ 98 */
96 public void setParameterNameDiscoverer(ParameterNameDiscoverer parameterNameDiscoverer) { 99 public void setParameterNameDiscoverer(ParameterNameDiscoverer parameterNameDiscoverer) {
97 this.parameterNameDiscoverer = parameterNameDiscoverer; 100 this.parameterNameDiscoverer = parameterNameDiscoverer;
98 } 101 }
99 102
  103 +
100 /** 104 /**
101 * Invoke the method after resolving its argument values in the context of the given message. 105 * Invoke the method after resolving its argument values in the context of the given message.
102 * <p>Argument values are commonly resolved through 106 * <p>Argument values are commonly resolved through
@@ -200,20 +204,21 @@ public class InvocableHandlerMethod extends HandlerMethod { @@ -200,20 +204,21 @@ public class InvocableHandlerMethod extends HandlerMethod {
200 } 204 }
201 catch (IllegalArgumentException ex) { 205 catch (IllegalArgumentException ex) {
202 assertTargetBean(getBridgedMethod(), getBean(), args); 206 assertTargetBean(getBridgedMethod(), getBean(), args);
203 - String text = (ex.getMessage() != null ? ex.getMessage() : "Illegal argument"); 207 + String text = (ex.getMessage() == null || ex.getCause() instanceof NullPointerException) ?
  208 + "Illegal argument": ex.getMessage();
204 throw new IllegalStateException(formatInvokeError(text, args), ex); 209 throw new IllegalStateException(formatInvokeError(text, args), ex);
205 } 210 }
206 catch (InvocationTargetException ex) { 211 catch (InvocationTargetException ex) {
207 // Unwrap for HandlerExceptionResolvers ... 212 // Unwrap for HandlerExceptionResolvers ...
208 Throwable targetException = ex.getTargetException(); 213 Throwable targetException = ex.getTargetException();
209 - if (targetException instanceof RuntimeException) {  
210 - throw (RuntimeException) targetException; 214 + if (targetException instanceof RuntimeException runtimeException) {
  215 + throw runtimeException;
211 } 216 }
212 - else if (targetException instanceof Error) {  
213 - throw (Error) targetException; 217 + else if (targetException instanceof Error error) {
  218 + throw error;
214 } 219 }
215 - else if (targetException instanceof Exception) {  
216 - throw (Exception) targetException; 220 + else if (targetException instanceof Exception exception) {
  221 + throw exception;
217 } 222 }
218 else { 223 else {
219 throw new IllegalStateException(formatInvokeError("Invocation failure", args), targetException); 224 throw new IllegalStateException(formatInvokeError("Invocation failure", args), targetException);
@@ -225,7 +230,8 @@ public class InvocableHandlerMethod extends HandlerMethod { @@ -225,7 +230,8 @@ public class InvocableHandlerMethod extends HandlerMethod {
225 return new AsyncResultMethodParameter(returnValue); 230 return new AsyncResultMethodParameter(returnValue);
226 } 231 }
227 232
228 - private class AsyncResultMethodParameter extends HandlerMethodParameter { 233 +
  234 + private class AsyncResultMethodParameter extends AnnotatedMethodParameter {
229 235
230 @Nullable 236 @Nullable
231 private final Object returnValue; 237 private final Object returnValue;
yudao-framework/yudao-spring-boot-starter-captcha/src/main/java/cn/iocoder/yudao/framework/captcha/config/YudaoCaptchaConfiguration.java
@@ -8,7 +8,7 @@ import org.springframework.boot.autoconfigure.AutoConfiguration; @@ -8,7 +8,7 @@ import org.springframework.boot.autoconfigure.AutoConfiguration;
8 import org.springframework.context.annotation.Bean; 8 import org.springframework.context.annotation.Bean;
9 import org.springframework.data.redis.core.StringRedisTemplate; 9 import org.springframework.data.redis.core.StringRedisTemplate;
10 10
11 -import javax.annotation.Resource; 11 +import jakarta.annotation.Resource;
12 12
13 @AutoConfiguration 13 @AutoConfiguration
14 public class YudaoCaptchaConfiguration { 14 public class YudaoCaptchaConfiguration {
yudao-framework/yudao-spring-boot-starter-captcha/src/main/java/cn/iocoder/yudao/framework/captcha/core/service/RedisCaptchaServiceImpl.java
@@ -5,7 +5,7 @@ import lombok.AllArgsConstructor; @@ -5,7 +5,7 @@ import lombok.AllArgsConstructor;
5 import lombok.NoArgsConstructor; 5 import lombok.NoArgsConstructor;
6 import org.springframework.data.redis.core.StringRedisTemplate; 6 import org.springframework.data.redis.core.StringRedisTemplate;
7 7
8 -import javax.annotation.Resource; 8 +import jakarta.annotation.Resource;
9 import java.util.concurrent.TimeUnit; 9 import java.util.concurrent.TimeUnit;
10 10
11 /** 11 /**
yudao-framework/yudao-spring-boot-starter-excel/src/main/java/cn/iocoder/yudao/framework/excel/core/util/ExcelUtils.java
@@ -4,7 +4,7 @@ import com.alibaba.excel.EasyExcel; @@ -4,7 +4,7 @@ import com.alibaba.excel.EasyExcel;
4 import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy; 4 import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
5 import org.springframework.web.multipart.MultipartFile; 5 import org.springframework.web.multipart.MultipartFile;
6 6
7 -import javax.servlet.http.HttpServletResponse; 7 +import jakarta.servlet.http.HttpServletResponse;
8 import java.io.IOException; 8 import java.io.IOException;
9 import java.net.URLEncoder; 9 import java.net.URLEncoder;
10 import java.util.List; 10 import java.util.List;
yudao-framework/yudao-spring-boot-starter-file/src/main/java/cn/iocoder/yudao/framework/file/core/client/db/DBFileClientConfig.java
@@ -4,7 +4,7 @@ import cn.iocoder.yudao.framework.file.core.client.FileClientConfig; @@ -4,7 +4,7 @@ import cn.iocoder.yudao.framework.file.core.client.FileClientConfig;
4 import lombok.Data; 4 import lombok.Data;
5 import org.hibernate.validator.constraints.URL; 5 import org.hibernate.validator.constraints.URL;
6 6
7 -import javax.validation.constraints.NotEmpty; 7 +import jakarta.validation.constraints.NotEmpty;
8 8
9 /** 9 /**
10 * 基于 DB 存储的文件客户端的配置类 10 * 基于 DB 存储的文件客户端的配置类
yudao-framework/yudao-spring-boot-starter-file/src/main/java/cn/iocoder/yudao/framework/file/core/client/ftp/FtpFileClientConfig.java
@@ -4,8 +4,8 @@ import cn.iocoder.yudao.framework.file.core.client.FileClientConfig; @@ -4,8 +4,8 @@ import cn.iocoder.yudao.framework.file.core.client.FileClientConfig;
4 import lombok.Data; 4 import lombok.Data;
5 import org.hibernate.validator.constraints.URL; 5 import org.hibernate.validator.constraints.URL;
6 6
7 -import javax.validation.constraints.NotEmpty;  
8 -import javax.validation.constraints.NotNull; 7 +import jakarta.validation.constraints.NotEmpty;
  8 +import jakarta.validation.constraints.NotNull;
9 9
10 /** 10 /**
11 * Ftp 文件客户端的配置类 11 * Ftp 文件客户端的配置类
yudao-framework/yudao-spring-boot-starter-file/src/main/java/cn/iocoder/yudao/framework/file/core/client/local/LocalFileClientConfig.java
@@ -4,7 +4,7 @@ import cn.iocoder.yudao.framework.file.core.client.FileClientConfig; @@ -4,7 +4,7 @@ import cn.iocoder.yudao.framework.file.core.client.FileClientConfig;
4 import lombok.Data; 4 import lombok.Data;
5 import org.hibernate.validator.constraints.URL; 5 import org.hibernate.validator.constraints.URL;
6 6
7 -import javax.validation.constraints.NotEmpty; 7 +import jakarta.validation.constraints.NotEmpty;
8 8
9 /** 9 /**
10 * 本地文件客户端的配置类 10 * 本地文件客户端的配置类
yudao-framework/yudao-spring-boot-starter-file/src/main/java/cn/iocoder/yudao/framework/file/core/client/s3/S3FileClientConfig.java
@@ -6,8 +6,8 @@ import com.fasterxml.jackson.annotation.JsonIgnore; @@ -6,8 +6,8 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
6 import lombok.Data; 6 import lombok.Data;
7 import org.hibernate.validator.constraints.URL; 7 import org.hibernate.validator.constraints.URL;
8 8
9 -import javax.validation.constraints.AssertTrue;  
10 -import javax.validation.constraints.NotNull; 9 +import jakarta.validation.constraints.AssertTrue;
  10 +import jakarta.validation.constraints.NotNull;
11 11
12 /** 12 /**
13 * S3 文件客户端的配置类 13 * S3 文件客户端的配置类
yudao-framework/yudao-spring-boot-starter-file/src/main/java/cn/iocoder/yudao/framework/file/core/client/sftp/SftpFileClientConfig.java
@@ -4,8 +4,8 @@ import cn.iocoder.yudao.framework.file.core.client.FileClientConfig; @@ -4,8 +4,8 @@ import cn.iocoder.yudao.framework.file.core.client.FileClientConfig;
4 import lombok.Data; 4 import lombok.Data;
5 import org.hibernate.validator.constraints.URL; 5 import org.hibernate.validator.constraints.URL;
6 6
7 -import javax.validation.constraints.NotEmpty;  
8 -import javax.validation.constraints.NotNull; 7 +import jakarta.validation.constraints.NotEmpty;
  8 +import jakarta.validation.constraints.NotNull;
9 9
10 /** 10 /**
11 * Sftp 文件客户端的配置类 11 * Sftp 文件客户端的配置类
yudao-framework/yudao-spring-boot-starter-file/src/test/java/cn/iocoder/yudao/framework/file/core/client/s3/S3FileClientTest.java
@@ -6,7 +6,7 @@ import cn.iocoder.yudao.framework.common.util.validation.ValidationUtils; @@ -6,7 +6,7 @@ import cn.iocoder.yudao.framework.common.util.validation.ValidationUtils;
6 import org.junit.jupiter.api.Disabled; 6 import org.junit.jupiter.api.Disabled;
7 import org.junit.jupiter.api.Test; 7 import org.junit.jupiter.api.Test;
8 8
9 -import javax.validation.Validation; 9 +import jakarta.validation.Validation;
10 10
11 public class S3FileClientTest { 11 public class S3FileClientTest {
12 12
yudao-framework/yudao-spring-boot-starter-flowable/src/main/java/cn/iocoder/yudao/framework/flowable/core/web/FlowableWebFilter.java
@@ -4,10 +4,10 @@ import cn.iocoder.yudao.framework.flowable.core.util.FlowableUtils; @@ -4,10 +4,10 @@ import cn.iocoder.yudao.framework.flowable.core.util.FlowableUtils;
4 import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils; 4 import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
5 import org.springframework.web.filter.OncePerRequestFilter; 5 import org.springframework.web.filter.OncePerRequestFilter;
6 6
7 -import javax.servlet.FilterChain;  
8 -import javax.servlet.ServletException;  
9 -import javax.servlet.http.HttpServletRequest;  
10 -import javax.servlet.http.HttpServletResponse; 7 +import jakarta.servlet.FilterChain;
  8 +import jakarta.servlet.ServletException;
  9 +import jakarta.servlet.http.HttpServletRequest;
  10 +import jakarta.servlet.http.HttpServletResponse;
11 import java.io.IOException; 11 import java.io.IOException;
12 /** 12 /**
13 * flowable Web 过滤器,将 userId 设置到 {@link org.flowable.common.engine.impl.identity.Authentication} 中 13 * flowable Web 过滤器,将 userId 设置到 {@link org.flowable.common.engine.impl.identity.Authentication} 中
yudao-framework/yudao-spring-boot-starter-job/src/main/java/cn/iocoder/yudao/framework/quartz/core/handler/JobHandlerInvoker.java
@@ -13,9 +13,8 @@ import org.quartz.PersistJobDataAfterExecution; @@ -13,9 +13,8 @@ import org.quartz.PersistJobDataAfterExecution;
13 import org.springframework.context.ApplicationContext; 13 import org.springframework.context.ApplicationContext;
14 import org.springframework.scheduling.quartz.QuartzJobBean; 14 import org.springframework.scheduling.quartz.QuartzJobBean;
15 15
16 -import javax.annotation.Resource; 16 +import jakarta.annotation.Resource;
17 import java.time.LocalDateTime; 17 import java.time.LocalDateTime;
18 -import java.time.temporal.ChronoUnit;  
19 18
20 import static cn.hutool.core.exceptions.ExceptionUtil.getRootCauseMessage; 19 import static cn.hutool.core.exceptions.ExceptionUtil.getRootCauseMessage;
21 20
yudao-framework/yudao-spring-boot-starter-job/src/main/java/cn/iocoder/yudao/framework/quartz/core/service/JobLogFrameworkService.java
1 package cn.iocoder.yudao.framework.quartz.core.service; 1 package cn.iocoder.yudao.framework.quartz.core.service;
2 2
3 -import javax.validation.constraints.NotEmpty;  
4 -import javax.validation.constraints.NotNull; 3 +import jakarta.validation.constraints.NotEmpty;
  4 +import jakarta.validation.constraints.NotNull;
5 import java.time.LocalDateTime; 5 import java.time.LocalDateTime;
6 6
7 /** 7 /**
yudao-framework/yudao-spring-boot-starter-monitor/src/main/java/cn/iocoder/yudao/framework/tracer/core/filter/TraceFilter.java
@@ -3,10 +3,10 @@ package cn.iocoder.yudao.framework.tracer.core.filter; @@ -3,10 +3,10 @@ package cn.iocoder.yudao.framework.tracer.core.filter;
3 import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils; 3 import cn.iocoder.yudao.framework.common.util.monitor.TracerUtils;
4 import org.springframework.web.filter.OncePerRequestFilter; 4 import org.springframework.web.filter.OncePerRequestFilter;
5 5
6 -import javax.servlet.FilterChain;  
7 -import javax.servlet.ServletException;  
8 -import javax.servlet.http.HttpServletRequest;  
9 -import javax.servlet.http.HttpServletResponse; 6 +import jakarta.servlet.FilterChain;
  7 +import jakarta.servlet.ServletException;
  8 +import jakarta.servlet.http.HttpServletRequest;
  9 +import jakarta.servlet.http.HttpServletResponse;
10 import java.io.IOException; 10 import java.io.IOException;
11 11
12 /** 12 /**
yudao-framework/yudao-spring-boot-starter-mybatis/pom.xml
@@ -56,21 +56,28 @@ @@ -56,21 +56,28 @@
56 56
57 <dependency> 57 <dependency>
58 <groupId>com.alibaba</groupId> 58 <groupId>com.alibaba</groupId>
59 - <artifactId>druid-spring-boot-starter</artifactId> 59 + <artifactId>druid-spring-boot-3-starter</artifactId>
60 </dependency> 60 </dependency>
61 <dependency> 61 <dependency>
62 <groupId>com.baomidou</groupId> 62 <groupId>com.baomidou</groupId>
63 - <artifactId>mybatis-plus-boot-starter</artifactId> 63 + <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
64 </dependency> 64 </dependency>
65 <dependency> 65 <dependency>
66 <groupId>com.baomidou</groupId> 66 <groupId>com.baomidou</groupId>
67 - <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <!-- 多数据源 --> 67 + <artifactId>dynamic-datasource-spring-boot3-starter</artifactId> <!-- 多数据源 -->
68 </dependency> 68 </dependency>
69 69
70 <dependency> 70 <dependency>
71 <groupId>com.github.yulichang</groupId> 71 <groupId>com.github.yulichang</groupId>
72 <artifactId>mybatis-plus-join-boot-starter</artifactId> <!-- MyBatis 联表查询 --> 72 <artifactId>mybatis-plus-join-boot-starter</artifactId> <!-- MyBatis 联表查询 -->
73 </dependency> 73 </dependency>
  74 +
  75 + <!-- TODO 芋艿:临时解决 spring boot 3.x 适配 -->
  76 + <dependency>
  77 + <groupId>org.mybatis</groupId>
  78 + <artifactId>mybatis-spring</artifactId>
  79 + <version>3.0.3</version>
  80 + </dependency>
74 </dependencies> 81 </dependencies>
75 82
76 </project> 83 </project>
yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/datasource/config/YudaoDataSourceAutoConfiguration.java
1 package cn.iocoder.yudao.framework.datasource.config; 1 package cn.iocoder.yudao.framework.datasource.config;
2 2
3 import cn.iocoder.yudao.framework.datasource.core.filter.DruidAdRemoveFilter; 3 import cn.iocoder.yudao.framework.datasource.core.filter.DruidAdRemoveFilter;
4 -import com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties; 4 +import com.alibaba.druid.spring.boot3.autoconfigure.properties.DruidStatProperties;
5 import org.springframework.boot.autoconfigure.AutoConfiguration; 5 import org.springframework.boot.autoconfigure.AutoConfiguration;
6 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; 6 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
7 import org.springframework.boot.context.properties.EnableConfigurationProperties; 7 import org.springframework.boot.context.properties.EnableConfigurationProperties;
yudao-framework/yudao-spring-boot-starter-mybatis/src/main/java/cn/iocoder/yudao/framework/datasource/core/filter/DruidAdRemoveFilter.java
@@ -3,10 +3,10 @@ package cn.iocoder.yudao.framework.datasource.core.filter; @@ -3,10 +3,10 @@ package cn.iocoder.yudao.framework.datasource.core.filter;
3 import com.alibaba.druid.util.Utils; 3 import com.alibaba.druid.util.Utils;
4 import org.springframework.web.filter.OncePerRequestFilter; 4 import org.springframework.web.filter.OncePerRequestFilter;
5 5
6 -import javax.servlet.FilterChain;  
7 -import javax.servlet.ServletException;  
8 -import javax.servlet.http.HttpServletRequest;  
9 -import javax.servlet.http.HttpServletResponse; 6 +import jakarta.servlet.FilterChain;
  7 +import jakarta.servlet.ServletException;
  8 +import jakarta.servlet.http.HttpServletRequest;
  9 +import jakarta.servlet.http.HttpServletResponse;
10 import java.io.IOException; 10 import java.io.IOException;
11 11
12 /** 12 /**
yudao-framework/yudao-spring-boot-starter-protection/src/main/java/cn/iocoder/yudao/framework/idempotent/core/keyresolver/impl/ExpressionIdempotentKeyResolver.java
@@ -5,7 +5,7 @@ import cn.iocoder.yudao.framework.idempotent.core.annotation.Idempotent; @@ -5,7 +5,7 @@ import cn.iocoder.yudao.framework.idempotent.core.annotation.Idempotent;
5 import cn.iocoder.yudao.framework.idempotent.core.keyresolver.IdempotentKeyResolver; 5 import cn.iocoder.yudao.framework.idempotent.core.keyresolver.IdempotentKeyResolver;
6 import org.aspectj.lang.JoinPoint; 6 import org.aspectj.lang.JoinPoint;
7 import org.aspectj.lang.reflect.MethodSignature; 7 import org.aspectj.lang.reflect.MethodSignature;
8 -import org.springframework.core.LocalVariableTableParameterNameDiscoverer; 8 +import org.springframework.core.DefaultParameterNameDiscoverer;
9 import org.springframework.core.ParameterNameDiscoverer; 9 import org.springframework.core.ParameterNameDiscoverer;
10 import org.springframework.expression.Expression; 10 import org.springframework.expression.Expression;
11 import org.springframework.expression.ExpressionParser; 11 import org.springframework.expression.ExpressionParser;
@@ -21,7 +21,8 @@ import java.lang.reflect.Method; @@ -21,7 +21,8 @@ import java.lang.reflect.Method;
21 */ 21 */
22 public class ExpressionIdempotentKeyResolver implements IdempotentKeyResolver { 22 public class ExpressionIdempotentKeyResolver implements IdempotentKeyResolver {
23 23
24 - private final ParameterNameDiscoverer parameterNameDiscoverer = new LocalVariableTableParameterNameDiscoverer(); 24 + private final ParameterNameDiscoverer parameterNameDiscoverer = new DefaultParameterNameDiscoverer();
  25 +
25 private final ExpressionParser expressionParser = new SpelExpressionParser(); 26 private final ExpressionParser expressionParser = new SpelExpressionParser();
26 27
27 @Override 28 @Override
yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/config/AuthorizeRequestsCustomizer.java
1 package cn.iocoder.yudao.framework.security.config; 1 package cn.iocoder.yudao.framework.security.config;
2 2
3 import cn.iocoder.yudao.framework.web.config.WebProperties; 3 import cn.iocoder.yudao.framework.web.config.WebProperties;
  4 +import jakarta.annotation.Resource;
4 import org.springframework.core.Ordered; 5 import org.springframework.core.Ordered;
5 import org.springframework.security.config.Customizer; 6 import org.springframework.security.config.Customizer;
6 import org.springframework.security.config.annotation.web.builders.HttpSecurity; 7 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
7 -import org.springframework.security.config.annotation.web.configurers.ExpressionUrlAuthorizationConfigurer;  
8 -  
9 -import javax.annotation.Resource; 8 +import org.springframework.security.config.annotation.web.configurers.AuthorizeHttpRequestsConfigurer;
10 9
11 /** 10 /**
12 * 自定义的 URL 的安全配置 11 * 自定义的 URL 的安全配置
@@ -15,7 +14,7 @@ import javax.annotation.Resource; @@ -15,7 +14,7 @@ import javax.annotation.Resource;
15 * @author 芋道源码 14 * @author 芋道源码
16 */ 15 */
17 public abstract class AuthorizeRequestsCustomizer 16 public abstract class AuthorizeRequestsCustomizer
18 - implements Customizer<ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry>, Ordered { 17 + implements Customizer<AuthorizeHttpRequestsConfigurer<HttpSecurity>.AuthorizationManagerRequestMatcherRegistry>, Ordered {
19 18
20 @Resource 19 @Resource
21 private WebProperties webProperties; 20 private WebProperties webProperties;
yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/config/SecurityProperties.java
@@ -4,8 +4,8 @@ import lombok.Data; @@ -4,8 +4,8 @@ import lombok.Data;
4 import org.springframework.boot.context.properties.ConfigurationProperties; 4 import org.springframework.boot.context.properties.ConfigurationProperties;
5 import org.springframework.validation.annotation.Validated; 5 import org.springframework.validation.annotation.Validated;
6 6
7 -import javax.validation.constraints.NotEmpty;  
8 -import javax.validation.constraints.NotNull; 7 +import jakarta.validation.constraints.NotEmpty;
  8 +import jakarta.validation.constraints.NotNull;
9 import java.util.Collections; 9 import java.util.Collections;
10 import java.util.List; 10 import java.util.List;
11 11
yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/config/YudaoSecurityAutoConfiguration.java
@@ -20,7 +20,7 @@ import org.springframework.security.crypto.password.PasswordEncoder; @@ -20,7 +20,7 @@ import org.springframework.security.crypto.password.PasswordEncoder;
20 import org.springframework.security.web.AuthenticationEntryPoint; 20 import org.springframework.security.web.AuthenticationEntryPoint;
21 import org.springframework.security.web.access.AccessDeniedHandler; 21 import org.springframework.security.web.access.AccessDeniedHandler;
22 22
23 -import javax.annotation.Resource; 23 +import jakarta.annotation.Resource;
24 24
25 /** 25 /**
26 * Spring Security 自动配置类,主要用于相关组件的配置 26 * Spring Security 自动配置类,主要用于相关组件的配置
yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/config/YudaoWebSecurityConfigurerAdapter.java
@@ -10,9 +10,13 @@ import org.springframework.context.ApplicationContext; @@ -10,9 +10,13 @@ import org.springframework.context.ApplicationContext;
10 import org.springframework.context.annotation.Bean; 10 import org.springframework.context.annotation.Bean;
11 import org.springframework.http.HttpMethod; 11 import org.springframework.http.HttpMethod;
12 import org.springframework.security.authentication.AuthenticationManager; 12 import org.springframework.security.authentication.AuthenticationManager;
  13 +import org.springframework.security.config.Customizer;
13 import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration; 14 import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration;
14 import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; 15 import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
  16 +import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
15 import org.springframework.security.config.annotation.web.builders.HttpSecurity; 17 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
  18 +import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer;
  19 +import org.springframework.security.config.annotation.web.configurers.HeadersConfigurer;
16 import org.springframework.security.config.http.SessionCreationPolicy; 20 import org.springframework.security.config.http.SessionCreationPolicy;
17 import org.springframework.security.web.AuthenticationEntryPoint; 21 import org.springframework.security.web.AuthenticationEntryPoint;
18 import org.springframework.security.web.SecurityFilterChain; 22 import org.springframework.security.web.SecurityFilterChain;
@@ -23,8 +27,8 @@ import org.springframework.web.method.HandlerMethod; @@ -23,8 +27,8 @@ import org.springframework.web.method.HandlerMethod;
23 import org.springframework.web.servlet.mvc.method.RequestMappingInfo; 27 import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
24 import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; 28 import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
25 29
26 -import javax.annotation.Resource;  
27 -import javax.annotation.security.PermitAll; 30 +import jakarta.annotation.Resource;
  31 +import jakarta.annotation.security.PermitAll;
28 import java.util.List; 32 import java.util.List;
29 import java.util.Map; 33 import java.util.Map;
30 import java.util.Set; 34 import java.util.Set;
@@ -35,7 +39,7 @@ import java.util.Set; @@ -35,7 +39,7 @@ import java.util.Set;
35 * @author 芋道源码 39 * @author 芋道源码
36 */ 40 */
37 @AutoConfiguration 41 @AutoConfiguration
38 -@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true) 42 +@EnableMethodSecurity(securedEnabled = true)
39 public class YudaoWebSecurityConfigurerAdapter { 43 public class YudaoWebSecurityConfigurerAdapter {
40 44
41 @Resource 45 @Resource
@@ -101,15 +105,15 @@ public class YudaoWebSecurityConfigurerAdapter { @@ -101,15 +105,15 @@ public class YudaoWebSecurityConfigurerAdapter {
101 // 登出 105 // 登出
102 httpSecurity 106 httpSecurity
103 // 开启跨域 107 // 开启跨域
104 - .cors().and() 108 + .cors(Customizer.withDefaults())
105 // CSRF 禁用,因为不使用 Session 109 // CSRF 禁用,因为不使用 Session
106 - .csrf().disable() 110 + .csrf(AbstractHttpConfigurer::disable)
107 // 基于 token 机制,所以不需要 Session 111 // 基于 token 机制,所以不需要 Session
108 - .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and()  
109 - .headers().frameOptions().disable().and() 112 + .sessionManagement(c -> c.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
  113 + .headers(c -> c.frameOptions(HeadersConfigurer.FrameOptionsConfig::disable))
110 // 一堆自定义的 Spring Security 处理器 114 // 一堆自定义的 Spring Security 处理器
111 - .exceptionHandling().authenticationEntryPoint(authenticationEntryPoint)  
112 - .accessDeniedHandler(accessDeniedHandler); 115 + .exceptionHandling(c -> c.authenticationEntryPoint(authenticationEntryPoint)
  116 + .accessDeniedHandler(accessDeniedHandler));
113 // 登录、登录暂时不使用 Spring Security 的拓展点,主要考虑一方面拓展多用户、多种登录方式相对复杂,一方面用户的学习成本较高 117 // 登录、登录暂时不使用 Spring Security 的拓展点,主要考虑一方面拓展多用户、多种登录方式相对复杂,一方面用户的学习成本较高
114 118
115 // 获得 @PermitAll 带来的 URL 列表,免登录 119 // 获得 @PermitAll 带来的 URL 列表,免登录
@@ -117,27 +121,25 @@ public class YudaoWebSecurityConfigurerAdapter { @@ -117,27 +121,25 @@ public class YudaoWebSecurityConfigurerAdapter {
117 // 设置每个请求的权限 121 // 设置每个请求的权限
118 httpSecurity 122 httpSecurity
119 // ①:全局共享规则 123 // ①:全局共享规则
120 - .authorizeRequests()  
121 - // 1.1 静态资源,可匿名访问  
122 - .antMatchers(HttpMethod.GET, "/*.html", "/**/*.html", "/**/*.css", "/**/*.js").permitAll()  
123 - // 1.2 设置 @PermitAll 无需认证  
124 - .antMatchers(HttpMethod.GET, permitAllUrls.get(HttpMethod.GET).toArray(new String[0])).permitAll()  
125 - .antMatchers(HttpMethod.POST, permitAllUrls.get(HttpMethod.POST).toArray(new String[0])).permitAll()  
126 - .antMatchers(HttpMethod.PUT, permitAllUrls.get(HttpMethod.PUT).toArray(new String[0])).permitAll()  
127 - .antMatchers(HttpMethod.DELETE, permitAllUrls.get(HttpMethod.DELETE).toArray(new String[0])).permitAll()  
128 - // 1.3 基于 yudao.security.permit-all-urls 无需认证  
129 - .antMatchers(securityProperties.getPermitAllUrls().toArray(new String[0])).permitAll()  
130 - // 1.4 设置 App API 无需认证  
131 - .antMatchers(buildAppApi("/**")).permitAll()  
132 - // 1.5 验证码captcha 允许匿名访问  
133 - .antMatchers("/captcha/get", "/captcha/check").permitAll() 124 + .authorizeHttpRequests(c -> c
  125 + // 1.1 静态资源,可匿名访问
  126 + .requestMatchers(HttpMethod.GET, "/*.html", "/*.html", "/*.css", "/*.js").permitAll()
  127 + // 1.1 设置 @PermitAll 无需认证
  128 + .requestMatchers(HttpMethod.GET, permitAllUrls.get(HttpMethod.GET).toArray(new String[0])).permitAll()
  129 + .requestMatchers(HttpMethod.POST, permitAllUrls.get(HttpMethod.POST).toArray(new String[0])).permitAll()
  130 + .requestMatchers(HttpMethod.PUT, permitAllUrls.get(HttpMethod.PUT).toArray(new String[0])).permitAll()
  131 + .requestMatchers(HttpMethod.DELETE, permitAllUrls.get(HttpMethod.DELETE).toArray(new String[0])).permitAll()
  132 + .requestMatchers(HttpMethod.HEAD, permitAllUrls.get(HttpMethod.HEAD).toArray(new String[0])).permitAll()
  133 + .requestMatchers(HttpMethod.PATCH, permitAllUrls.get(HttpMethod.PATCH).toArray(new String[0])).permitAll()
  134 + // 1.2 基于 yudao.security.permit-all-urls 无需认证
  135 + .requestMatchers(securityProperties.getPermitAllUrls().toArray(new String[0])).permitAll()
  136 + // 1.3 设置 App API 无需认证
  137 + .requestMatchers(buildAppApi("/**")).permitAll()
  138 + )
134 // ②:每个项目的自定义规则 139 // ②:每个项目的自定义规则
135 - .and().authorizeRequests(registry -> // 下面,循环设置自定义规则  
136 - authorizeRequestsCustomizers.forEach(customizer -> customizer.customize(registry))) 140 + .authorizeHttpRequests(c -> authorizeRequestsCustomizers.forEach(customizer -> customizer.customize(c)))
137 // ③:兜底规则,必须认证 141 // ③:兜底规则,必须认证
138 - .authorizeRequests()  
139 - .anyRequest().authenticated()  
140 - ; 142 + .authorizeHttpRequests(c -> c.anyRequest().authenticated());
141 143
142 // 添加 Token Filter 144 // 添加 Token Filter
143 httpSecurity.addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class); 145 httpSecurity.addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class);
@@ -171,6 +173,8 @@ public class YudaoWebSecurityConfigurerAdapter { @@ -171,6 +173,8 @@ public class YudaoWebSecurityConfigurerAdapter {
171 result.putAll(HttpMethod.POST, urls); 173 result.putAll(HttpMethod.POST, urls);
172 result.putAll(HttpMethod.PUT, urls); 174 result.putAll(HttpMethod.PUT, urls);
173 result.putAll(HttpMethod.DELETE, urls); 175 result.putAll(HttpMethod.DELETE, urls);
  176 + result.putAll(HttpMethod.HEAD, urls);
  177 + result.putAll(HttpMethod.PATCH, urls);
174 continue; 178 continue;
175 } 179 }
176 // 根据请求方法,添加到 result 结果 180 // 根据请求方法,添加到 result 结果
@@ -188,6 +192,12 @@ public class YudaoWebSecurityConfigurerAdapter { @@ -188,6 +192,12 @@ public class YudaoWebSecurityConfigurerAdapter {
188 case DELETE: 192 case DELETE:
189 result.putAll(HttpMethod.DELETE, urls); 193 result.putAll(HttpMethod.DELETE, urls);
190 break; 194 break;
  195 + case HEAD:
  196 + result.putAll(HttpMethod.HEAD, urls);
  197 + break;
  198 + case PATCH:
  199 + result.putAll(HttpMethod.PATCH, urls);
  200 + break;
191 } 201 }
192 }); 202 });
193 } 203 }
yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/filter/TokenAuthenticationFilter.java
@@ -16,10 +16,10 @@ import lombok.RequiredArgsConstructor; @@ -16,10 +16,10 @@ import lombok.RequiredArgsConstructor;
16 import org.springframework.security.access.AccessDeniedException; 16 import org.springframework.security.access.AccessDeniedException;
17 import org.springframework.web.filter.OncePerRequestFilter; 17 import org.springframework.web.filter.OncePerRequestFilter;
18 18
19 -import javax.servlet.FilterChain;  
20 -import javax.servlet.ServletException;  
21 -import javax.servlet.http.HttpServletRequest;  
22 -import javax.servlet.http.HttpServletResponse; 19 +import jakarta.servlet.FilterChain;
  20 +import jakarta.servlet.ServletException;
  21 +import jakarta.servlet.http.HttpServletRequest;
  22 +import jakarta.servlet.http.HttpServletResponse;
23 import java.io.IOException; 23 import java.io.IOException;
24 24
25 /** 25 /**
yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/handler/AccessDeniedHandlerImpl.java
@@ -8,16 +8,14 @@ import lombok.extern.slf4j.Slf4j; @@ -8,16 +8,14 @@ import lombok.extern.slf4j.Slf4j;
8 import org.springframework.security.access.AccessDeniedException; 8 import org.springframework.security.access.AccessDeniedException;
9 import org.springframework.security.web.access.AccessDeniedHandler; 9 import org.springframework.security.web.access.AccessDeniedHandler;
10 import org.springframework.security.web.access.ExceptionTranslationFilter; 10 import org.springframework.security.web.access.ExceptionTranslationFilter;
11 -import org.springframework.stereotype.Component;  
12 11
13 -import javax.servlet.FilterChain;  
14 -import javax.servlet.ServletException;  
15 -import javax.servlet.http.HttpServletRequest;  
16 -import javax.servlet.http.HttpServletResponse; 12 +import jakarta.servlet.FilterChain;
  13 +import jakarta.servlet.ServletException;
  14 +import jakarta.servlet.http.HttpServletRequest;
  15 +import jakarta.servlet.http.HttpServletResponse;
17 import java.io.IOException; 16 import java.io.IOException;
18 17
19 import static cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants.FORBIDDEN; 18 import static cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants.FORBIDDEN;
20 -import static cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants.UNAUTHORIZED;  
21 19
22 /** 20 /**
23 * 访问一个需要认证的 URL 资源,已经认证(登录)但是没有权限的情况下,返回 {@link GlobalErrorCodeConstants#FORBIDDEN} 错误码。 21 * 访问一个需要认证的 URL 资源,已经认证(登录)但是没有权限的情况下,返回 {@link GlobalErrorCodeConstants#FORBIDDEN} 错误码。
yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/handler/AuthenticationEntryPointImpl.java
@@ -8,9 +8,9 @@ import org.springframework.security.core.AuthenticationException; @@ -8,9 +8,9 @@ import org.springframework.security.core.AuthenticationException;
8 import org.springframework.security.web.AuthenticationEntryPoint; 8 import org.springframework.security.web.AuthenticationEntryPoint;
9 import org.springframework.security.web.access.ExceptionTranslationFilter; 9 import org.springframework.security.web.access.ExceptionTranslationFilter;
10 10
11 -import javax.servlet.FilterChain;  
12 -import javax.servlet.http.HttpServletRequest;  
13 -import javax.servlet.http.HttpServletResponse; 11 +import jakarta.servlet.FilterChain;
  12 +import jakarta.servlet.http.HttpServletRequest;
  13 +import jakarta.servlet.http.HttpServletResponse;
14 14
15 import static cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants.UNAUTHORIZED; 15 import static cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants.UNAUTHORIZED;
16 16
yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/core/util/SecurityFrameworkUtils.java
@@ -11,7 +11,7 @@ import org.springframework.security.core.context.SecurityContextHolder; @@ -11,7 +11,7 @@ import org.springframework.security.core.context.SecurityContextHolder;
11 import org.springframework.security.web.authentication.WebAuthenticationDetailsSource; 11 import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;
12 import org.springframework.util.StringUtils; 12 import org.springframework.util.StringUtils;
13 13
14 -import javax.servlet.http.HttpServletRequest; 14 +import jakarta.servlet.http.HttpServletRequest;
15 import java.util.Collections; 15 import java.util.Collections;
16 16
17 /** 17 /**
yudao-framework/yudao-spring-boot-starter-test/src/main/java/cn/iocoder/yudao/framework/test/core/ut/BaseDbAndRedisUnitTest.java
@@ -5,9 +5,10 @@ import cn.iocoder.yudao.framework.mybatis.config.YudaoMybatisAutoConfiguration; @@ -5,9 +5,10 @@ import cn.iocoder.yudao.framework.mybatis.config.YudaoMybatisAutoConfiguration;
5 import cn.iocoder.yudao.framework.redis.config.YudaoRedisAutoConfiguration; 5 import cn.iocoder.yudao.framework.redis.config.YudaoRedisAutoConfiguration;
6 import cn.iocoder.yudao.framework.test.config.RedisTestConfiguration; 6 import cn.iocoder.yudao.framework.test.config.RedisTestConfiguration;
7 import cn.iocoder.yudao.framework.test.config.SqlInitializationTestConfiguration; 7 import cn.iocoder.yudao.framework.test.config.SqlInitializationTestConfiguration;
8 -import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure; 8 +import com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceAutoConfigure;
9 import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration; 9 import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration;
10 import org.redisson.spring.starter.RedissonAutoConfiguration; 10 import org.redisson.spring.starter.RedissonAutoConfiguration;
  11 +import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration;
11 import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; 12 import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
12 import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration; 13 import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;
13 import org.springframework.boot.test.context.SpringBootTest; 14 import org.springframework.boot.test.context.SpringBootTest;
@@ -40,8 +41,8 @@ public class BaseDbAndRedisUnitTest { @@ -40,8 +41,8 @@ public class BaseDbAndRedisUnitTest {
40 41
41 // Redis 配置类 42 // Redis 配置类
42 RedisTestConfiguration.class, // Redis 测试配置类,用于启动 RedisServer 43 RedisTestConfiguration.class, // Redis 测试配置类,用于启动 RedisServer
43 -// RedisAutoConfiguration.class, // Spring Redis 自动配置类  
44 YudaoRedisAutoConfiguration.class, // 自己的 Redis 配置类 44 YudaoRedisAutoConfiguration.class, // 自己的 Redis 配置类
  45 + RedisAutoConfiguration.class, // Spring Redis 自动配置类
45 RedissonAutoConfiguration.class, // Redisson 自动高配置类 46 RedissonAutoConfiguration.class, // Redisson 自动高配置类
46 }) 47 })
47 public static class Application { 48 public static class Application {
yudao-framework/yudao-spring-boot-starter-test/src/main/java/cn/iocoder/yudao/framework/test/core/ut/BaseDbUnitTest.java
@@ -3,7 +3,7 @@ package cn.iocoder.yudao.framework.test.core.ut; @@ -3,7 +3,7 @@ package cn.iocoder.yudao.framework.test.core.ut;
3 import cn.iocoder.yudao.framework.datasource.config.YudaoDataSourceAutoConfiguration; 3 import cn.iocoder.yudao.framework.datasource.config.YudaoDataSourceAutoConfiguration;
4 import cn.iocoder.yudao.framework.mybatis.config.YudaoMybatisAutoConfiguration; 4 import cn.iocoder.yudao.framework.mybatis.config.YudaoMybatisAutoConfiguration;
5 import cn.iocoder.yudao.framework.test.config.SqlInitializationTestConfiguration; 5 import cn.iocoder.yudao.framework.test.config.SqlInitializationTestConfiguration;
6 -import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure; 6 +import com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceAutoConfigure;
7 import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration; 7 import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration;
8 import com.github.yulichang.autoconfigure.MybatisPlusJoinAutoConfiguration; 8 import com.github.yulichang.autoconfigure.MybatisPlusJoinAutoConfiguration;
9 import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; 9 import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
yudao-framework/yudao-spring-boot-starter-test/src/main/java/cn/iocoder/yudao/framework/test/core/util/RandomUtils.java
@@ -7,10 +7,7 @@ import cn.hutool.core.util.StrUtil; @@ -7,10 +7,7 @@ import cn.hutool.core.util.StrUtil;
7 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; 7 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
8 import uk.co.jemos.podam.api.PodamFactory; 8 import uk.co.jemos.podam.api.PodamFactory;
9 import uk.co.jemos.podam.api.PodamFactoryImpl; 9 import uk.co.jemos.podam.api.PodamFactoryImpl;
10 -import uk.co.jemos.podam.common.AttributeStrategy;  
11 10
12 -import javax.validation.constraints.Email;  
13 -import java.lang.annotation.Annotation;  
14 import java.lang.reflect.Type; 11 import java.lang.reflect.Type;
15 import java.time.LocalDateTime; 12 import java.time.LocalDateTime;
16 import java.util.Arrays; 13 import java.util.Arrays;
yudao-framework/yudao-spring-boot-starter-web/pom.xml
@@ -35,11 +35,11 @@ @@ -35,11 +35,11 @@
35 35
36 <dependency> 36 <dependency>
37 <groupId>com.github.xiaoymin</groupId> 37 <groupId>com.github.xiaoymin</groupId>
38 - <artifactId>knife4j-openapi3-spring-boot-starter</artifactId> 38 + <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
39 </dependency> 39 </dependency>
40 <dependency> 40 <dependency>
41 <groupId>org.springdoc</groupId> 41 <groupId>org.springdoc</groupId>
42 - <artifactId>springdoc-openapi-ui</artifactId> 42 + <artifactId>springdoc-openapi-starter-webmvc-api</artifactId>
43 </dependency> 43 </dependency>
44 44
45 <dependency> 45 <dependency>
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/config/YudaoApiLogAutoConfiguration.java
@@ -16,7 +16,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; @@ -16,7 +16,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
16 import org.springframework.boot.web.servlet.FilterRegistrationBean; 16 import org.springframework.boot.web.servlet.FilterRegistrationBean;
17 import org.springframework.context.annotation.Bean; 17 import org.springframework.context.annotation.Bean;
18 18
19 -import javax.servlet.Filter; 19 +import jakarta.servlet.Filter;
20 20
21 @AutoConfiguration(after = YudaoWebAutoConfiguration.class) 21 @AutoConfiguration(after = YudaoWebAutoConfiguration.class)
22 public class YudaoApiLogAutoConfiguration { 22 public class YudaoApiLogAutoConfiguration {
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/filter/ApiAccessLogFilter.java
@@ -14,10 +14,10 @@ import cn.iocoder.yudao.framework.web.core.filter.ApiRequestFilter; @@ -14,10 +14,10 @@ import cn.iocoder.yudao.framework.web.core.filter.ApiRequestFilter;
14 import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils; 14 import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils;
15 import lombok.extern.slf4j.Slf4j; 15 import lombok.extern.slf4j.Slf4j;
16 16
17 -import javax.servlet.FilterChain;  
18 -import javax.servlet.ServletException;  
19 -import javax.servlet.http.HttpServletRequest;  
20 -import javax.servlet.http.HttpServletResponse; 17 +import jakarta.servlet.FilterChain;
  18 +import jakarta.servlet.ServletException;
  19 +import jakarta.servlet.http.HttpServletRequest;
  20 +import jakarta.servlet.http.HttpServletResponse;
21 import java.io.IOException; 21 import java.io.IOException;
22 import java.time.LocalDateTime; 22 import java.time.LocalDateTime;
23 import java.time.temporal.ChronoUnit; 23 import java.time.temporal.ChronoUnit;
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/service/ApiAccessLog.java
@@ -2,7 +2,7 @@ package cn.iocoder.yudao.framework.apilog.core.service; @@ -2,7 +2,7 @@ package cn.iocoder.yudao.framework.apilog.core.service;
2 2
3 import lombok.Data; 3 import lombok.Data;
4 4
5 -import javax.validation.constraints.NotNull; 5 +import jakarta.validation.constraints.NotNull;
6 import java.time.LocalDateTime; 6 import java.time.LocalDateTime;
7 7
8 /** 8 /**
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/apilog/core/service/ApiErrorLog.java
@@ -2,7 +2,7 @@ package cn.iocoder.yudao.framework.apilog.core.service; @@ -2,7 +2,7 @@ package cn.iocoder.yudao.framework.apilog.core.service;
2 2
3 import lombok.Data; 3 import lombok.Data;
4 4
5 -import javax.validation.constraints.NotNull; 5 +import jakarta.validation.constraints.NotNull;
6 import java.time.LocalDateTime; 6 import java.time.LocalDateTime;
7 7
8 /** 8 /**
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/swagger/config/SwaggerProperties.java
@@ -3,7 +3,7 @@ package cn.iocoder.yudao.framework.swagger.config; @@ -3,7 +3,7 @@ package cn.iocoder.yudao.framework.swagger.config;
3 import lombok.Data; 3 import lombok.Data;
4 import org.springframework.boot.context.properties.ConfigurationProperties; 4 import org.springframework.boot.context.properties.ConfigurationProperties;
5 5
6 -import javax.validation.constraints.NotEmpty; 6 +import jakarta.validation.constraints.NotEmpty;
7 7
8 /** 8 /**
9 * Swagger 配置属性 9 * Swagger 配置属性
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/swagger/config/YudaoSwaggerAutoConfiguration.java
@@ -10,10 +10,14 @@ import io.swagger.v3.oas.models.media.StringSchema; @@ -10,10 +10,14 @@ import io.swagger.v3.oas.models.media.StringSchema;
10 import io.swagger.v3.oas.models.parameters.Parameter; 10 import io.swagger.v3.oas.models.parameters.Parameter;
11 import io.swagger.v3.oas.models.security.SecurityRequirement; 11 import io.swagger.v3.oas.models.security.SecurityRequirement;
12 import io.swagger.v3.oas.models.security.SecurityScheme; 12 import io.swagger.v3.oas.models.security.SecurityScheme;
13 -import org.springdoc.core.*;  
14 import org.springdoc.core.customizers.OpenApiBuilderCustomizer; 13 import org.springdoc.core.customizers.OpenApiBuilderCustomizer;
15 import org.springdoc.core.customizers.ServerBaseUrlCustomizer; 14 import org.springdoc.core.customizers.ServerBaseUrlCustomizer;
  15 +import org.springdoc.core.models.GroupedOpenApi;
  16 +import org.springdoc.core.properties.SpringDocConfigProperties;
16 import org.springdoc.core.providers.JavadocProvider; 17 import org.springdoc.core.providers.JavadocProvider;
  18 +import org.springdoc.core.service.OpenAPIService;
  19 +import org.springdoc.core.service.SecurityService;
  20 +import org.springdoc.core.utils.PropertyResolverUtils;
17 import org.springframework.boot.autoconfigure.AutoConfiguration; 21 import org.springframework.boot.autoconfigure.AutoConfiguration;
18 import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; 22 import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
19 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; 23 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/config/WebProperties.java
@@ -7,9 +7,9 @@ import org.springframework.boot.context.properties.ConfigurationProperties; @@ -7,9 +7,9 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
7 import org.springframework.validation.annotation.Validated; 7 import org.springframework.validation.annotation.Validated;
8 import org.springframework.web.servlet.config.annotation.PathMatchConfigurer; 8 import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
9 9
10 -import javax.validation.Valid;  
11 -import javax.validation.constraints.NotEmpty;  
12 -import javax.validation.constraints.NotNull; 10 +import jakarta.validation.Valid;
  11 +import jakarta.validation.constraints.NotEmpty;
  12 +import jakarta.validation.constraints.NotNull;
13 13
14 @ConfigurationProperties(prefix = "yudao.web") 14 @ConfigurationProperties(prefix = "yudao.web")
15 @Validated 15 @Validated
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/config/YudaoWebAutoConfiguration.java
@@ -24,8 +24,8 @@ import org.springframework.web.filter.CorsFilter; @@ -24,8 +24,8 @@ import org.springframework.web.filter.CorsFilter;
24 import org.springframework.web.servlet.config.annotation.PathMatchConfigurer; 24 import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
25 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; 25 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
26 26
27 -import javax.annotation.Resource;  
28 -import javax.servlet.Filter; 27 +import jakarta.annotation.Resource;
  28 +import jakarta.servlet.Filter;
29 29
30 @AutoConfiguration 30 @AutoConfiguration
31 @EnableConfigurationProperties(WebProperties.class) 31 @EnableConfigurationProperties(WebProperties.class)
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/core/filter/ApiRequestFilter.java
@@ -5,7 +5,7 @@ import cn.iocoder.yudao.framework.web.config.WebProperties; @@ -5,7 +5,7 @@ import cn.iocoder.yudao.framework.web.config.WebProperties;
5 import lombok.RequiredArgsConstructor; 5 import lombok.RequiredArgsConstructor;
6 import org.springframework.web.filter.OncePerRequestFilter; 6 import org.springframework.web.filter.OncePerRequestFilter;
7 7
8 -import javax.servlet.http.HttpServletRequest; 8 +import jakarta.servlet.http.HttpServletRequest;
9 9
10 /** 10 /**
11 * 过滤 /admin-api、/app-api 等 API 请求的过滤器 11 * 过滤 /admin-api、/app-api 等 API 请求的过滤器
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/core/filter/CacheRequestBodyFilter.java
@@ -3,10 +3,10 @@ package cn.iocoder.yudao.framework.web.core.filter; @@ -3,10 +3,10 @@ package cn.iocoder.yudao.framework.web.core.filter;
3 import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils; 3 import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils;
4 import org.springframework.web.filter.OncePerRequestFilter; 4 import org.springframework.web.filter.OncePerRequestFilter;
5 5
6 -import javax.servlet.FilterChain;  
7 -import javax.servlet.ServletException;  
8 -import javax.servlet.http.HttpServletRequest;  
9 -import javax.servlet.http.HttpServletResponse; 6 +import jakarta.servlet.FilterChain;
  7 +import jakarta.servlet.ServletException;
  8 +import jakarta.servlet.http.HttpServletRequest;
  9 +import jakarta.servlet.http.HttpServletResponse;
10 import java.io.IOException; 10 import java.io.IOException;
11 11
12 /** 12 /**
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/core/filter/CacheRequestBodyWrapper.java
@@ -2,10 +2,10 @@ package cn.iocoder.yudao.framework.web.core.filter; @@ -2,10 +2,10 @@ package cn.iocoder.yudao.framework.web.core.filter;
2 2
3 import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils; 3 import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils;
4 4
5 -import javax.servlet.ReadListener;  
6 -import javax.servlet.ServletInputStream;  
7 -import javax.servlet.http.HttpServletRequest;  
8 -import javax.servlet.http.HttpServletRequestWrapper; 5 +import jakarta.servlet.ReadListener;
  6 +import jakarta.servlet.ServletInputStream;
  7 +import jakarta.servlet.http.HttpServletRequest;
  8 +import jakarta.servlet.http.HttpServletRequestWrapper;
9 import java.io.BufferedReader; 9 import java.io.BufferedReader;
10 import java.io.ByteArrayInputStream; 10 import java.io.ByteArrayInputStream;
11 import java.io.IOException; 11 import java.io.IOException;
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/core/filter/DemoFilter.java
@@ -6,9 +6,9 @@ import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils; @@ -6,9 +6,9 @@ import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils;
6 import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils; 6 import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils;
7 import org.springframework.web.filter.OncePerRequestFilter; 7 import org.springframework.web.filter.OncePerRequestFilter;
8 8
9 -import javax.servlet.FilterChain;  
10 -import javax.servlet.http.HttpServletRequest;  
11 -import javax.servlet.http.HttpServletResponse; 9 +import jakarta.servlet.FilterChain;
  10 +import jakarta.servlet.http.HttpServletRequest;
  11 +import jakarta.servlet.http.HttpServletResponse;
12 12
13 import static cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants.DEMO_DENY; 13 import static cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants.DEMO_DENY;
14 14
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/core/handler/GlobalExceptionHandler.java
@@ -26,10 +26,10 @@ import org.springframework.web.bind.annotation.RestControllerAdvice; @@ -26,10 +26,10 @@ import org.springframework.web.bind.annotation.RestControllerAdvice;
26 import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException; 26 import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException;
27 import org.springframework.web.servlet.NoHandlerFoundException; 27 import org.springframework.web.servlet.NoHandlerFoundException;
28 28
29 -import javax.servlet.http.HttpServletRequest;  
30 -import javax.validation.ConstraintViolation;  
31 -import javax.validation.ConstraintViolationException;  
32 -import javax.validation.ValidationException; 29 +import jakarta.servlet.http.HttpServletRequest;
  30 +import jakarta.validation.ConstraintViolation;
  31 +import jakarta.validation.ConstraintViolationException;
  32 +import jakarta.validation.ValidationException;
33 import java.time.LocalDateTime; 33 import java.time.LocalDateTime;
34 import java.util.Map; 34 import java.util.Map;
35 import java.util.Objects; 35 import java.util.Objects;
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/web/core/util/WebFrameworkUtils.java
@@ -8,8 +8,8 @@ import org.springframework.web.context.request.RequestAttributes; @@ -8,8 +8,8 @@ import org.springframework.web.context.request.RequestAttributes;
8 import org.springframework.web.context.request.RequestContextHolder; 8 import org.springframework.web.context.request.RequestContextHolder;
9 import org.springframework.web.context.request.ServletRequestAttributes; 9 import org.springframework.web.context.request.ServletRequestAttributes;
10 10
11 -import javax.servlet.ServletRequest;  
12 -import javax.servlet.http.HttpServletRequest; 11 +import jakarta.servlet.ServletRequest;
  12 +import jakarta.servlet.http.HttpServletRequest;
13 13
14 /** 14 /**
15 * 专属于 web 包的工具类 15 * 专属于 web 包的工具类
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/xss/core/filter/XssFilter.java
@@ -6,10 +6,10 @@ import lombok.AllArgsConstructor; @@ -6,10 +6,10 @@ import lombok.AllArgsConstructor;
6 import org.springframework.util.PathMatcher; 6 import org.springframework.util.PathMatcher;
7 import org.springframework.web.filter.OncePerRequestFilter; 7 import org.springframework.web.filter.OncePerRequestFilter;
8 8
9 -import javax.servlet.FilterChain;  
10 -import javax.servlet.ServletException;  
11 -import javax.servlet.http.HttpServletRequest;  
12 -import javax.servlet.http.HttpServletResponse; 9 +import jakarta.servlet.FilterChain;
  10 +import jakarta.servlet.ServletException;
  11 +import jakarta.servlet.http.HttpServletRequest;
  12 +import jakarta.servlet.http.HttpServletResponse;
13 import java.io.IOException; 13 import java.io.IOException;
14 14
15 /** 15 /**
yudao-framework/yudao-spring-boot-starter-web/src/main/java/cn/iocoder/yudao/framework/xss/core/filter/XssRequestWrapper.java
@@ -2,8 +2,8 @@ package cn.iocoder.yudao.framework.xss.core.filter; @@ -2,8 +2,8 @@ package cn.iocoder.yudao.framework.xss.core.filter;
2 2
3 import cn.iocoder.yudao.framework.xss.core.clean.XssCleaner; 3 import cn.iocoder.yudao.framework.xss.core.clean.XssCleaner;
4 4
5 -import javax.servlet.http.HttpServletRequest;  
6 -import javax.servlet.http.HttpServletRequestWrapper; 5 +import jakarta.servlet.http.HttpServletRequest;
  6 +import jakarta.servlet.http.HttpServletRequestWrapper;
7 import java.util.LinkedHashMap; 7 import java.util.LinkedHashMap;
8 import java.util.Map; 8 import java.util.Map;
9 9
yudao-framework/yudao-spring-boot-starter-websocket/src/main/java/cn/iocoder/yudao/framework/websocket/config/WebSocketProperties.java
@@ -4,8 +4,8 @@ import lombok.Data; @@ -4,8 +4,8 @@ import lombok.Data;
4 import org.springframework.boot.context.properties.ConfigurationProperties; 4 import org.springframework.boot.context.properties.ConfigurationProperties;
5 import org.springframework.validation.annotation.Validated; 5 import org.springframework.validation.annotation.Validated;
6 6
7 -import javax.validation.constraints.NotEmpty;  
8 -import javax.validation.constraints.NotNull; 7 +import jakarta.validation.constraints.NotEmpty;
  8 +import jakarta.validation.constraints.NotNull;
9 9
10 /** 10 /**
11 * WebSocket 配置项 11 * WebSocket 配置项
yudao-framework/yudao-spring-boot-starter-websocket/src/main/java/cn/iocoder/yudao/framework/websocket/core/security/WebSocketAuthorizeRequestsCustomizer.java
@@ -4,7 +4,7 @@ import cn.iocoder.yudao.framework.security.config.AuthorizeRequestsCustomizer; @@ -4,7 +4,7 @@ import cn.iocoder.yudao.framework.security.config.AuthorizeRequestsCustomizer;
4 import cn.iocoder.yudao.framework.websocket.config.WebSocketProperties; 4 import cn.iocoder.yudao.framework.websocket.config.WebSocketProperties;
5 import lombok.RequiredArgsConstructor; 5 import lombok.RequiredArgsConstructor;
6 import org.springframework.security.config.annotation.web.builders.HttpSecurity; 6 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
7 -import org.springframework.security.config.annotation.web.configurers.ExpressionUrlAuthorizationConfigurer; 7 +import org.springframework.security.config.annotation.web.configurers.AuthorizeHttpRequestsConfigurer;
8 8
9 /** 9 /**
10 * WebSocket 的权限自定义 10 * WebSocket 的权限自定义
@@ -17,8 +17,8 @@ public class WebSocketAuthorizeRequestsCustomizer extends AuthorizeRequestsCusto @@ -17,8 +17,8 @@ public class WebSocketAuthorizeRequestsCustomizer extends AuthorizeRequestsCusto
17 private final WebSocketProperties webSocketProperties; 17 private final WebSocketProperties webSocketProperties;
18 18
19 @Override 19 @Override
20 - public void customize(ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry registry) {  
21 - registry.antMatchers(webSocketProperties.getPath()).permitAll(); 20 + public void customize(AuthorizeHttpRequestsConfigurer<HttpSecurity>.AuthorizationManagerRequestMatcherRegistry registry) {
  21 + registry.requestMatchers(webSocketProperties.getPath()).permitAll();
22 } 22 }
23 23
24 } 24 }
yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/task/BpmProcessInstanceApi.java
@@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.bpm.api.task; @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.bpm.api.task;
2 2
3 import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; 3 import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
4 4
5 -import javax.validation.Valid; 5 +import jakarta.validation.Valid;
6 6
7 /** 7 /**
8 * 流程实例 Api 接口 8 * 流程实例 Api 接口
yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/task/dto/BpmProcessInstanceCreateReqDTO.java
@@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.bpm.api.task.dto; @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.bpm.api.task.dto;
2 2
3 import lombok.Data; 3 import lombok.Data;
4 4
5 -import javax.validation.constraints.NotEmpty; 5 +import jakarta.validation.constraints.NotEmpty;
6 import java.util.List; 6 import java.util.List;
7 import java.util.Map; 7 import java.util.Map;
8 8
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/api/task/BpmProcessInstanceApiImpl.java
@@ -5,8 +5,8 @@ import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService; @@ -5,8 +5,8 @@ import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService;
5 import org.springframework.stereotype.Service; 5 import org.springframework.stereotype.Service;
6 import org.springframework.validation.annotation.Validated; 6 import org.springframework.validation.annotation.Validated;
7 7
8 -import javax.annotation.Resource;  
9 -import javax.validation.Valid; 8 +import jakarta.annotation.Resource;
  9 +import jakarta.validation.Valid;
10 10
11 /** 11 /**
12 * Flowable 流程实例 Api 实现类 12 * Flowable 流程实例 Api 实现类
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/BpmFormController.java
@@ -13,8 +13,8 @@ import org.springframework.security.access.prepost.PreAuthorize; @@ -13,8 +13,8 @@ import org.springframework.security.access.prepost.PreAuthorize;
13 import org.springframework.validation.annotation.Validated; 13 import org.springframework.validation.annotation.Validated;
14 import org.springframework.web.bind.annotation.*; 14 import org.springframework.web.bind.annotation.*;
15 15
16 -import javax.annotation.Resource;  
17 -import javax.validation.Valid; 16 +import jakarta.annotation.Resource;
  17 +import jakarta.validation.Valid;
18 import java.util.List; 18 import java.util.List;
19 19
20 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 20 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/BpmModelController.java
@@ -13,8 +13,8 @@ import org.springframework.security.access.prepost.PreAuthorize; @@ -13,8 +13,8 @@ import org.springframework.security.access.prepost.PreAuthorize;
13 import org.springframework.validation.annotation.Validated; 13 import org.springframework.validation.annotation.Validated;
14 import org.springframework.web.bind.annotation.*; 14 import org.springframework.web.bind.annotation.*;
15 15
16 -import javax.annotation.Resource;  
17 -import javax.validation.Valid; 16 +import jakarta.annotation.Resource;
  17 +import jakarta.validation.Valid;
18 18
19 import java.io.IOException; 19 import java.io.IOException;
20 20
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/BpmProcessDefinitionController.java
@@ -17,7 +17,7 @@ import org.springframework.web.bind.annotation.RequestMapping; @@ -17,7 +17,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
17 import org.springframework.web.bind.annotation.RequestParam; 17 import org.springframework.web.bind.annotation.RequestParam;
18 import org.springframework.web.bind.annotation.RestController; 18 import org.springframework.web.bind.annotation.RestController;
19 19
20 -import javax.annotation.Resource; 20 +import jakarta.annotation.Resource;
21 21
22 import java.util.List; 22 import java.util.List;
23 23