From c86c1b5c6fbea0b08dc33272703fd179ea384150 Mon Sep 17 00:00:00 2001
From: YuNanXing <1224678297@qq.com>
Date: Fri, 31 May 2024 11:35:16 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E9=80=82=E9=85=8D=20springboot3=20jdk1?=
=?UTF-8?q?7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 13 ++-
xxl-job-admin/pom.xml | 10 ++
.../job/admin/controller/IndexController.java | 6 +-
.../admin/controller/JobApiController.java | 4 +-
.../admin/controller/JobCodeController.java | 4 +-
.../admin/controller/JobGroupController.java | 4 +-
.../admin/controller/JobInfoController.java | 4 +-
.../admin/controller/JobLogController.java | 4 +-
.../job/admin/controller/UserController.java | 4 +-
.../interceptor/CookieInterceptor.java | 6 +-
.../interceptor/PermissionInterceptor.java | 109 +++++++++++-------
.../controller/interceptor/WebMvcConfig.java | 2 +-
.../resolver/WebExceptionResolver.java | 4 +-
.../admin/core/alarm/impl/EmailJobAlarm.java | 2 +-
.../admin/core/conf/XxlJobAdminConfig.java | 2 +-
.../core/old/XxlJobDynamicScheduler.java | 6 +-
.../xxl/job/admin/core/util/CookieUtil.java | 6 +-
.../xxl/job/admin/service/LoginService.java | 6 +-
.../admin/service/impl/XxlJobServiceImpl.java | 2 +-
.../src/main/resources/application.properties | 4 +-
.../controller/JobInfoControllerTest.java | 2 +-
.../xxl/job/admin/dao/XxlJobGroupDaoTest.java | 2 +-
.../xxl/job/admin/dao/XxlJobInfoDaoTest.java | 2 +-
.../xxl/job/admin/dao/XxlJobLogDaoTest.java | 2 +-
.../job/admin/dao/XxlJobLogGlueDaoTest.java | 2 +-
.../job/admin/dao/XxlJobRegistryDaoTest.java | 2 +-
xxl-job-core/pom.xml | 6 +-
.../job/core/glue/impl/SpringGlueFactory.java | 2 +-
28 files changed, 132 insertions(+), 90 deletions(-)
diff --git a/pom.xml b/pom.xml
index ad5a2b4e..4ff997ef 100644
--- a/pom.xml
+++ b/pom.xml
@@ -20,28 +20,29 @@
UTF-8
UTF-8
UTF-8
- 1.8
- 1.8
+ 17
+ 17
true
4.1.108.Final
2.10.1
- 5.3.34
- 2.7.18
+ 6.1.8
+ 3.2.6
- 2.3.2
+ 3.0.3
8.3.0
2.0.13
5.10.2
- 1.3.2
+ 3.0.0
4.0.21
3.3.1
3.6.3
3.2.3
+ 3.13.0
diff --git a/xxl-job-admin/pom.xml b/xxl-job-admin/pom.xml
index 638312dd..22492e94 100644
--- a/xxl-job-admin/pom.xml
+++ b/xxl-job-admin/pom.xml
@@ -111,6 +111,16 @@
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ ${maven-compiler-plugin.version}
+
+ ${maven.compiler.source}
+ ${maven.compiler.target}
+ true
+
+
diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/IndexController.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/IndexController.java
index a84fb7dd..f0ec08b5 100644
--- a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/IndexController.java
+++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/IndexController.java
@@ -15,9 +15,9 @@ import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.view.RedirectView;
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobApiController.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobApiController.java
index aa51e739..d650913f 100644
--- a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobApiController.java
+++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobApiController.java
@@ -14,8 +14,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletRequest;
import java.util.List;
/**
diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobCodeController.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobCodeController.java
index 302b9bf9..1cd19753 100644
--- a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobCodeController.java
+++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobCodeController.java
@@ -12,8 +12,8 @@ import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;
diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobGroupController.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobGroupController.java
index 8e0c5a4d..1dedad38 100644
--- a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobGroupController.java
+++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobGroupController.java
@@ -15,8 +15,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletRequest;
import java.util.*;
/**
diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java
index 516dce41..209e10db 100644
--- a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java
+++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java
@@ -24,8 +24,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletRequest;
import java.util.*;
/**
diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java
index 7333c133..42346817 100644
--- a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java
+++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java
@@ -26,8 +26,8 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.util.HtmlUtils;
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/UserController.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/UserController.java
index 3f4c7559..13b999c7 100644
--- a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/UserController.java
+++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/UserController.java
@@ -16,8 +16,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/CookieInterceptor.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/CookieInterceptor.java
index 930b9e8a..027c1e92 100644
--- a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/CookieInterceptor.java
+++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/CookieInterceptor.java
@@ -6,9 +6,9 @@ import org.springframework.stereotype.Component;
import org.springframework.web.servlet.AsyncHandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import java.util.HashMap;
/**
diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/PermissionInterceptor.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/PermissionInterceptor.java
index ecb28114..6365ca2f 100644
--- a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/PermissionInterceptor.java
+++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/PermissionInterceptor.java
@@ -4,13 +4,17 @@ import com.xxl.job.admin.controller.annotation.PermissionLimit;
import com.xxl.job.admin.core.model.XxlJobUser;
import com.xxl.job.admin.core.util.I18nUtil;
import com.xxl.job.admin.service.LoginService;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.AsyncHandlerInterceptor;
+import org.springframework.web.servlet.ModelAndView;
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
/**
* 权限拦截
@@ -20,40 +24,67 @@ import javax.servlet.http.HttpServletResponse;
@Component
public class PermissionInterceptor implements AsyncHandlerInterceptor {
- @Resource
- private LoginService loginService;
-
- @Override
- public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
-
- if (!(handler instanceof HandlerMethod)) {
- return true; // proceed with the next interceptor
- }
-
- // if need login
- boolean needLogin = true;
- boolean needAdminuser = false;
- HandlerMethod method = (HandlerMethod)handler;
- PermissionLimit permission = method.getMethodAnnotation(PermissionLimit.class);
- if (permission!=null) {
- needLogin = permission.limit();
- needAdminuser = permission.adminuser();
- }
-
- if (needLogin) {
- XxlJobUser loginUser = loginService.ifLogin(request, response);
- if (loginUser == null) {
- response.setStatus(302);
- response.setHeader("location", request.getContextPath()+"/toLogin");
- return false;
- }
- if (needAdminuser && loginUser.getRole()!=1) {
- throw new RuntimeException(I18nUtil.getString("system_permission_limit"));
- }
- request.setAttribute(LoginService.LOGIN_IDENTITY_KEY, loginUser);
- }
-
- return true; // proceed with the next interceptor
- }
-
+ @Resource
+ private LoginService loginService;
+
+ @Override
+ public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+
+ if (!(handler instanceof HandlerMethod)) {
+ return true; // proceed with the next interceptor
+ }
+
+ // if need login
+ boolean needLogin = true;
+ boolean needAdminuser = false;
+ HandlerMethod method = (HandlerMethod) handler;
+ PermissionLimit permission = method.getMethodAnnotation(PermissionLimit.class);
+ if (permission != null) {
+ needLogin = permission.limit();
+ needAdminuser = permission.adminuser();
+ }
+
+ if (needLogin) {
+ XxlJobUser loginUser = loginService.ifLogin(request, response);
+ if (loginUser == null) {
+ response.setStatus(302);
+ response.setHeader("location", request.getContextPath() + "/toLogin");
+ return false;
+ }
+ if (needAdminuser && loginUser.getRole() != 1) {
+ throw new RuntimeException(I18nUtil.getString("system_permission_limit"));
+ }
+ request.setAttribute(LoginService.LOGIN_IDENTITY_KEY, loginUser);
+ }
+
+ return true; // proceed with the next interceptor
+ }
+
+ /**
+ * 升级springboot3 jdk 17
+ * spring6移除了对freemarker的jsp支持,
+ * 所以导致了内置的Request对象用不了,可以在PermissionInterceptor下添加以下代码
+ *
来自issues:
+ * https://github.com/xuxueli/xxl-job/issues/3338
+ * 感谢 @zuihou
+ *
+ * @param request 请求
+ * @param response 响应
+ * @param handler 处理对象
+ * @param modelAndView 视图
+ * @throws Exception 异常
+ */
+ @Override
+ public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
+ if (modelAndView != null) {
+ Map attributes = new HashMap<>();
+ Enumeration enumeration = request.getAttributeNames();
+ while (enumeration.hasMoreElements()) {
+ String key = enumeration.nextElement();
+ attributes.put(key, request.getAttribute(key));
+ }
+ modelAndView.addObject("Request", attributes);
+ }
+ }
+
}
diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/WebMvcConfig.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/WebMvcConfig.java
index 0be6ba66..9ac56c90 100644
--- a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/WebMvcConfig.java
+++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/WebMvcConfig.java
@@ -4,7 +4,7 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-import javax.annotation.Resource;
+import jakarta.annotation.Resource;
/**
* web mvc config
diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/resolver/WebExceptionResolver.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/resolver/WebExceptionResolver.java
index 114407b6..53d0325c 100644
--- a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/resolver/WebExceptionResolver.java
+++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/resolver/WebExceptionResolver.java
@@ -11,8 +11,8 @@ import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/alarm/impl/EmailJobAlarm.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/alarm/impl/EmailJobAlarm.java
index 16e52184..04254b10 100644
--- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/alarm/impl/EmailJobAlarm.java
+++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/alarm/impl/EmailJobAlarm.java
@@ -7,12 +7,12 @@ import com.xxl.job.admin.core.model.XxlJobInfo;
import com.xxl.job.admin.core.model.XxlJobLog;
import com.xxl.job.admin.core.util.I18nUtil;
import com.xxl.job.core.biz.model.ReturnT;
+import jakarta.mail.internet.MimeMessage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;
-import javax.mail.internet.MimeMessage;
import java.text.MessageFormat;
import java.util.Arrays;
import java.util.HashSet;
diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/conf/XxlJobAdminConfig.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/conf/XxlJobAdminConfig.java
index 380b8a59..cde335fa 100644
--- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/conf/XxlJobAdminConfig.java
+++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/conf/XxlJobAdminConfig.java
@@ -9,7 +9,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Component;
-import javax.annotation.Resource;
+import jakarta.annotation.Resource;
import javax.sql.DataSource;
import java.util.Arrays;
diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/old/XxlJobDynamicScheduler.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/old/XxlJobDynamicScheduler.java
index 1e62aa19..d9ec2161 100644
--- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/old/XxlJobDynamicScheduler.java
+++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/old/XxlJobDynamicScheduler.java
@@ -25,9 +25,9 @@
//import org.slf4j.LoggerFactory;
//import org.springframework.util.Assert;
//
-//import javax.servlet.ServletException;
-//import javax.servlet.http.HttpServletRequest;
-//import javax.servlet.http.HttpServletResponse;
+//import jakarta.servlet.ServletException;
+//import jakarta.servlet.http.HttpServletRequest;
+//import jakarta.servlet.http.HttpServletResponse;
//import java.io.IOException;
//import java.util.Date;
//import java.util.concurrent.ConcurrentHashMap;
diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/CookieUtil.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/CookieUtil.java
index 34a898f3..16b58d00 100644
--- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/CookieUtil.java
+++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/CookieUtil.java
@@ -1,8 +1,8 @@
package com.xxl.job.admin.core.util;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
/**
* Cookie.Util
diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/service/LoginService.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/service/LoginService.java
index e1cf2e44..fe157995 100644
--- a/xxl-job-admin/src/main/java/com/xxl/job/admin/service/LoginService.java
+++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/service/LoginService.java
@@ -9,9 +9,9 @@ import com.xxl.job.core.biz.model.ReturnT;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.DigestUtils;
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import java.math.BigInteger;
/**
diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java
index b7d96884..f2647983 100644
--- a/xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java
+++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java
@@ -22,7 +22,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
-import javax.annotation.Resource;
+import jakarta.annotation.Resource;
import java.text.MessageFormat;
import java.util.*;
diff --git a/xxl-job-admin/src/main/resources/application.properties b/xxl-job-admin/src/main/resources/application.properties
index d438057d..bafa8f8c 100644
--- a/xxl-job-admin/src/main/resources/application.properties
+++ b/xxl-job-admin/src/main/resources/application.properties
@@ -3,13 +3,13 @@ server.port=8080
server.servlet.context-path=/xxl-job-admin
### actuator
-management.server.servlet.context-path=/actuator
+management.server.base-path=/actuator
management.health.mail.enabled=false
### resources
spring.mvc.servlet.load-on-startup=0
spring.mvc.static-path-pattern=/static/**
-spring.resources.static-locations=classpath:/static/
+spring.web.resources.static-locations=classpath:/static/
### freemarker
spring.freemarker.templateLoaderPath=classpath:/templates/
diff --git a/xxl-job-admin/src/test/java/com/xxl/job/admin/controller/JobInfoControllerTest.java b/xxl-job-admin/src/test/java/com/xxl/job/admin/controller/JobInfoControllerTest.java
index 49bf8aec..4370c6e8 100644
--- a/xxl-job-admin/src/test/java/com/xxl/job/admin/controller/JobInfoControllerTest.java
+++ b/xxl-job-admin/src/test/java/com/xxl/job/admin/controller/JobInfoControllerTest.java
@@ -10,7 +10,7 @@ import org.springframework.test.web.servlet.MvcResult;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
-import javax.servlet.http.Cookie;
+import jakarta.servlet.http.Cookie;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
diff --git a/xxl-job-admin/src/test/java/com/xxl/job/admin/dao/XxlJobGroupDaoTest.java b/xxl-job-admin/src/test/java/com/xxl/job/admin/dao/XxlJobGroupDaoTest.java
index 90b68a94..5274fedb 100644
--- a/xxl-job-admin/src/test/java/com/xxl/job/admin/dao/XxlJobGroupDaoTest.java
+++ b/xxl-job-admin/src/test/java/com/xxl/job/admin/dao/XxlJobGroupDaoTest.java
@@ -4,7 +4,7 @@ import com.xxl.job.admin.core.model.XxlJobGroup;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
-import javax.annotation.Resource;
+import jakarta.annotation.Resource;
import java.util.Date;
import java.util.List;
diff --git a/xxl-job-admin/src/test/java/com/xxl/job/admin/dao/XxlJobInfoDaoTest.java b/xxl-job-admin/src/test/java/com/xxl/job/admin/dao/XxlJobInfoDaoTest.java
index 0cb7d53c..45a2e62f 100644
--- a/xxl-job-admin/src/test/java/com/xxl/job/admin/dao/XxlJobInfoDaoTest.java
+++ b/xxl-job-admin/src/test/java/com/xxl/job/admin/dao/XxlJobInfoDaoTest.java
@@ -8,7 +8,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest;
-import javax.annotation.Resource;
+import jakarta.annotation.Resource;
import java.util.Date;
import java.util.List;
diff --git a/xxl-job-admin/src/test/java/com/xxl/job/admin/dao/XxlJobLogDaoTest.java b/xxl-job-admin/src/test/java/com/xxl/job/admin/dao/XxlJobLogDaoTest.java
index c5888bb2..468ddf21 100644
--- a/xxl-job-admin/src/test/java/com/xxl/job/admin/dao/XxlJobLogDaoTest.java
+++ b/xxl-job-admin/src/test/java/com/xxl/job/admin/dao/XxlJobLogDaoTest.java
@@ -4,7 +4,7 @@ import com.xxl.job.admin.core.model.XxlJobLog;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
-import javax.annotation.Resource;
+import jakarta.annotation.Resource;
import java.util.Date;
import java.util.List;
diff --git a/xxl-job-admin/src/test/java/com/xxl/job/admin/dao/XxlJobLogGlueDaoTest.java b/xxl-job-admin/src/test/java/com/xxl/job/admin/dao/XxlJobLogGlueDaoTest.java
index 1e9eee33..1960a241 100644
--- a/xxl-job-admin/src/test/java/com/xxl/job/admin/dao/XxlJobLogGlueDaoTest.java
+++ b/xxl-job-admin/src/test/java/com/xxl/job/admin/dao/XxlJobLogGlueDaoTest.java
@@ -4,7 +4,7 @@ import com.xxl.job.admin.core.model.XxlJobLogGlue;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
-import javax.annotation.Resource;
+import jakarta.annotation.Resource;
import java.util.Date;
import java.util.List;
diff --git a/xxl-job-admin/src/test/java/com/xxl/job/admin/dao/XxlJobRegistryDaoTest.java b/xxl-job-admin/src/test/java/com/xxl/job/admin/dao/XxlJobRegistryDaoTest.java
index 5c0a15d8..41f5a46f 100644
--- a/xxl-job-admin/src/test/java/com/xxl/job/admin/dao/XxlJobRegistryDaoTest.java
+++ b/xxl-job-admin/src/test/java/com/xxl/job/admin/dao/XxlJobRegistryDaoTest.java
@@ -4,7 +4,7 @@ import com.xxl.job.admin.core.model.XxlJobRegistry;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
-import javax.annotation.Resource;
+import jakarta.annotation.Resource;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
diff --git a/xxl-job-core/pom.xml b/xxl-job-core/pom.xml
index a363344d..aecace82 100644
--- a/xxl-job-core/pom.xml
+++ b/xxl-job-core/pom.xml
@@ -53,9 +53,9 @@
- javax.annotation
- javax.annotation-api
- ${javax.annotation-api.version}
+ jakarta.annotation
+ jakarta.annotation-api
+ ${jakarta.annotation-api.version}
provided
diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/glue/impl/SpringGlueFactory.java b/xxl-job-core/src/main/java/com/xxl/job/core/glue/impl/SpringGlueFactory.java
index 37e44d5f..00cd8228 100644
--- a/xxl-job-core/src/main/java/com/xxl/job/core/glue/impl/SpringGlueFactory.java
+++ b/xxl-job-core/src/main/java/com/xxl/job/core/glue/impl/SpringGlueFactory.java
@@ -2,13 +2,13 @@ package com.xxl.job.core.glue.impl;
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
import com.xxl.job.core.glue.GlueFactory;
+import jakarta.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.core.annotation.AnnotationUtils;
-import javax.annotation.Resource;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;