Ver código fonte

升级到 jdk17

reghao 7 meses atrás
pai
commit
68f75f3555
82 arquivos alterados com 313 adições e 223 exclusões
  1. 1 1
      common/pom.xml
  2. 1 1
      deployer/pom.xml
  3. 1 1
      logstash/pom.xml
  4. 6 6
      pom.xml
  5. 21 27
      web/pom.xml
  6. 1 1
      web/src/main/java/cn/reghao/bnt/web/admin/controller/LoginController.java
  7. 1 1
      web/src/main/java/cn/reghao/bnt/web/admin/controller/SysFileController.java
  8. 3 3
      web/src/main/java/cn/reghao/bnt/web/admin/model/po/AccessLog.java
  9. 3 3
      web/src/main/java/cn/reghao/bnt/web/admin/model/po/DiskFile.java
  10. 2 2
      web/src/main/java/cn/reghao/bnt/web/admin/model/po/LoginAttempt.java
  11. 1 1
      web/src/main/java/cn/reghao/bnt/web/admin/model/po/Menu.java
  12. 1 1
      web/src/main/java/cn/reghao/bnt/web/admin/model/po/Role.java
  13. 3 3
      web/src/main/java/cn/reghao/bnt/web/admin/model/po/RuntimeLog.java
  14. 3 3
      web/src/main/java/cn/reghao/bnt/web/admin/model/po/SiteOption.java
  15. 1 1
      web/src/main/java/cn/reghao/bnt/web/admin/model/po/User.java
  16. 2 2
      web/src/main/java/cn/reghao/bnt/web/admin/model/po/UserMessage.java
  17. 3 3
      web/src/main/java/cn/reghao/bnt/web/admin/model/po/Webhook.java
  18. 4 4
      web/src/main/java/cn/reghao/bnt/web/admin/security/MyAuthenticationEntryPoint.java
  19. 93 32
      web/src/main/java/cn/reghao/bnt/web/admin/security/WebSecurityConfig.java
  20. 1 0
      web/src/main/java/cn/reghao/bnt/web/admin/security/access/MyAccessDecisionManager.java
  21. 2 1
      web/src/main/java/cn/reghao/bnt/web/admin/security/access/MySecurityMetadataSource.java
  22. 3 3
      web/src/main/java/cn/reghao/bnt/web/admin/security/filter/LoginRedirectFilter.java
  23. 3 3
      web/src/main/java/cn/reghao/bnt/web/admin/security/form/AccountAuthFilter.java
  24. 3 3
      web/src/main/java/cn/reghao/bnt/web/admin/security/handler/AuthFailureHandlerImpl.java
  25. 4 4
      web/src/main/java/cn/reghao/bnt/web/admin/security/handler/AuthSuccessHandlerImpl.java
  26. 2 2
      web/src/main/java/cn/reghao/bnt/web/admin/security/handler/LogoutHandlerImpl.java
  27. 3 3
      web/src/main/java/cn/reghao/bnt/web/admin/security/handler/LogoutSuccessHandlerImpl.java
  28. 3 3
      web/src/main/java/cn/reghao/bnt/web/admin/security/session/HttpSessionManager.java
  29. 33 0
      web/src/main/java/cn/reghao/bnt/web/admin/security/session/MySessionAuthenticationStrategy.java
  30. 2 2
      web/src/main/java/cn/reghao/bnt/web/admin/security/session/MySessionInformationExpiredStrategy.java
  31. 2 2
      web/src/main/java/cn/reghao/bnt/web/admin/service/FileService.java
  32. 1 1
      web/src/main/java/cn/reghao/bnt/web/admin/service/impl/AccountLoginServiceImpl.java
  33. 4 4
      web/src/main/java/cn/reghao/bnt/web/admin/service/impl/AccountServiceImpl.java
  34. 1 1
      web/src/main/java/cn/reghao/bnt/web/admin/service/impl/LoginAttemptServiceImpl.java
  35. 2 2
      web/src/main/java/cn/reghao/bnt/web/admin/service/impl/RoleServiceImpl.java
  36. 1 1
      web/src/main/java/cn/reghao/bnt/web/blog/controller/AdminArticleController.java
  37. 1 1
      web/src/main/java/cn/reghao/bnt/web/blog/controller/AdminQuestionController.java
  38. 1 1
      web/src/main/java/cn/reghao/bnt/web/blog/controller/ForegroundController.java
  39. 1 1
      web/src/main/java/cn/reghao/bnt/web/blog/hibernate/HibernateLucene.java
  40. 1 1
      web/src/main/java/cn/reghao/bnt/web/blog/hibernate/HibernateQuery.java
  41. 2 2
      web/src/main/java/cn/reghao/bnt/web/blog/model/po/AboutView.java
  42. 3 3
      web/src/main/java/cn/reghao/bnt/web/blog/model/po/Article.java
  43. 3 3
      web/src/main/java/cn/reghao/bnt/web/blog/model/po/ArticleTag.java
  44. 2 2
      web/src/main/java/cn/reghao/bnt/web/blog/model/po/ArticleView.java
  45. 3 3
      web/src/main/java/cn/reghao/bnt/web/blog/model/po/Category.java
  46. 3 3
      web/src/main/java/cn/reghao/bnt/web/blog/model/po/Question.java
  47. 1 1
      web/src/main/java/cn/reghao/bnt/web/blog/service/ArticleQuery.java
  48. 1 1
      web/src/main/java/cn/reghao/bnt/web/blog/service/QuestionService.java
  49. 2 2
      web/src/main/java/cn/reghao/bnt/web/config/AccessInterceptor.java
  50. 1 1
      web/src/main/java/cn/reghao/bnt/web/config/log/MyLogbackAppender.java
  51. 3 3
      web/src/main/java/cn/reghao/bnt/web/config/spring/SpringLifecycle.java
  52. 3 3
      web/src/main/java/cn/reghao/bnt/web/config/web/CorsFilter.java
  53. 1 1
      web/src/main/java/cn/reghao/bnt/web/config/web/exception/ControllerErrorHandler.java
  54. 1 1
      web/src/main/java/cn/reghao/bnt/web/config/web/exception/ControllerExceptionHandler.java
  55. 3 3
      web/src/main/java/cn/reghao/bnt/web/devops/aliyun/model/po/AliyunAccount.java
  56. 1 1
      web/src/main/java/cn/reghao/bnt/web/devops/aliyun/service/AliyunCdn.java
  57. 1 1
      web/src/main/java/cn/reghao/bnt/web/devops/aliyun/service/AliyunOss.java
  58. 1 1
      web/src/main/java/cn/reghao/bnt/web/devops/app/db/query/impl/AppBuildQueryImpl.java
  59. 3 3
      web/src/main/java/cn/reghao/bnt/web/devops/app/db/query/impl/AppDeployQueryImpl.java
  60. 3 3
      web/src/main/java/cn/reghao/bnt/web/devops/app/model/po/AppBuilding.java
  61. 1 1
      web/src/main/java/cn/reghao/bnt/web/devops/app/model/po/AppDeploying.java
  62. 2 2
      web/src/main/java/cn/reghao/bnt/web/devops/app/model/po/AppDeployingNode.java
  63. 1 1
      web/src/main/java/cn/reghao/bnt/web/devops/app/model/po/config/AppConfig.java
  64. 4 4
      web/src/main/java/cn/reghao/bnt/web/devops/app/model/po/config/AppDeployConfig.java
  65. 2 2
      web/src/main/java/cn/reghao/bnt/web/devops/app/model/po/log/BuildConfigSnapshot.java
  66. 1 1
      web/src/main/java/cn/reghao/bnt/web/devops/app/model/po/log/BuildConsumed.java
  67. 1 1
      web/src/main/java/cn/reghao/bnt/web/devops/app/model/po/log/BuildLog.java
  68. 1 1
      web/src/main/java/cn/reghao/bnt/web/devops/app/model/po/log/DeployLog.java
  69. 1 1
      web/src/main/java/cn/reghao/bnt/web/devops/build/model/po/CompilerBind.java
  70. 1 1
      web/src/main/java/cn/reghao/bnt/web/devops/build/model/po/CompilerConfig.java
  71. 3 3
      web/src/main/java/cn/reghao/bnt/web/devops/build/model/po/DockerRegistry.java
  72. 4 4
      web/src/main/java/cn/reghao/bnt/web/devops/build/model/po/PackerConfig.java
  73. 3 3
      web/src/main/java/cn/reghao/bnt/web/devops/build/model/po/RepoAuthConfig.java
  74. 4 4
      web/src/main/java/cn/reghao/bnt/web/devops/machine/model/po/MachineHost.java
  75. 3 3
      web/src/main/java/cn/reghao/bnt/web/devops/machine/model/po/MachineInfo.java
  76. 2 2
      web/src/main/java/cn/reghao/bnt/web/devops/machine/service/impl/MachineQueryImpl.java
  77. 1 1
      web/src/main/java/cn/reghao/bnt/web/template/TemplateConfiguration.java
  78. 1 1
      web/src/main/java/cn/reghao/bnt/web/util/BaseEntity.java
  79. 2 2
      web/src/main/java/cn/reghao/bnt/web/util/PageSort.java
  80. 1 1
      web/src/main/java/cn/reghao/bnt/web/util/UploadDownload.java
  81. 2 2
      web/src/main/resources/logback-spring.xml
  82. 6 6
      web/src/test/java/JpaTest.java

+ 1 - 1
common/pom.xml

@@ -16,7 +16,7 @@
         <dependency>
             <groupId>cn.reghao.jutil</groupId>
             <artifactId>jdk</artifactId>
-            <version>1.0.0-SNAPSHOT</version>
+            <version>jdk17-SNAPSHOT</version>
         </dependency>
 
         <dependency>

+ 1 - 1
deployer/pom.xml

@@ -19,7 +19,7 @@
         <dependency>
             <groupId>cn.reghao.jutil</groupId>
             <artifactId>jdk</artifactId>
-            <version>1.0.0-SNAPSHOT</version>
+            <version>jdk17-SNAPSHOT</version>
         </dependency>
 
         <dependency>

+ 1 - 1
logstash/pom.xml

@@ -19,7 +19,7 @@
         <dependency>
             <groupId>cn.reghao.jutil</groupId>
             <artifactId>jdk</artifactId>
-            <version>1.0.0-SNAPSHOT</version>
+            <version>jdk17-SNAPSHOT</version>
         </dependency>
 
         <dependency>

+ 6 - 6
pom.xml

@@ -20,28 +20,28 @@
     <description>a standalone WebApplication</description>
 
     <properties>
+        <maven.compiler.source>17</maven.compiler.source>
+        <maven.compiler.target>17</maven.compiler.target>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
-        <maven.compiler.source>11</maven.compiler.source>
-        <maven.compiler.target>11</maven.compiler.target>
     </properties>
 
     <dependencies>
         <dependency>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
-            <version>1.18.16</version>
-            <scope>provided</scope>
+            <optional>true</optional>
+            <version>1.18.42</version>
         </dependency>
         <dependency>
             <groupId>ch.qos.logback</groupId>
             <artifactId>logback-core</artifactId>
-            <version>1.2.3</version>
+            <version>1.4.14</version>
         </dependency>
         <dependency>
             <groupId>ch.qos.logback</groupId>
             <artifactId>logback-classic</artifactId>
-            <version>1.2.3</version>
+            <version>1.4.14</version>
         </dependency>
     </dependencies>
 

+ 21 - 27
web/pom.xml

@@ -15,7 +15,7 @@
 
     <properties>
         <project.build.outputDir>${project.basedir}/bin</project.build.outputDir>
-        <springboot.version>2.6.15</springboot.version>
+        <springboot.version>3.2.1</springboot.version>
     </properties>
 
     <dependencyManagement>
@@ -34,18 +34,8 @@
         <dependency>
             <groupId>cn.reghao.jutil</groupId>
             <artifactId>jdk</artifactId>
-            <version>1.0.0-SNAPSHOT</version>
-        </dependency>
-        <!--<dependency>
-            <groupId>cn.reghao.jutil</groupId>
-            <artifactId>tool</artifactId>
-            <version>1.0.0-SNAPSHOT</version>
+            <version>jdk17-SNAPSHOT</version>
         </dependency>
-        <dependency>
-            <groupId>cn.reghao.jutil</groupId>
-            <artifactId>validator</artifactId>
-            <version>1.0.0-SNAPSHOT</version>
-        </dependency>-->
         <dependency>
             <groupId>cn.reghao.bnt</groupId>
             <artifactId>common</artifactId>
@@ -55,7 +45,7 @@
         <dependency>
             <groupId>cn.reghao.jutil</groupId>
             <artifactId>web</artifactId>
-            <version>1.0.0-SNAPSHOT</version>
+            <version>jdk17-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
@@ -89,9 +79,9 @@
         </dependency>
 
         <dependency>
-            <groupId>mysql</groupId>
-            <artifactId>mysql-connector-java</artifactId>
-            <version>8.0.17</version>
+            <groupId>com.mysql</groupId>
+            <artifactId>mysql-connector-j</artifactId>
+            <version>8.0.31</version>
         </dependency>
         <dependency>
             <groupId>com.zaxxer</groupId>
@@ -146,32 +136,37 @@
         <dependency>
             <groupId>org.hibernate.search</groupId>
             <artifactId>hibernate-search-mapper-orm</artifactId>
-            <version>6.2.4.Final</version>
+            <version>7.0.0.Final</version>
         </dependency>
         <dependency>
             <groupId>org.hibernate.search</groupId>
             <artifactId>hibernate-search-backend-lucene</artifactId>
-            <version>6.2.4.Final</version>
+            <version>7.0.0.Final</version>
         </dependency>
         <dependency>
             <groupId>org.apache.lucene</groupId>
             <artifactId>lucene-core</artifactId>
-            <version>8.11.2</version>
+            <version>9.8.0</version>
         </dependency>
         <dependency>
             <groupId>org.apache.lucene</groupId>
             <artifactId>lucene-queryparser</artifactId>
-            <version>8.11.2</version>
+            <version>9.8.0</version>
         </dependency>
         <dependency>
             <groupId>org.apache.lucene</groupId>
             <artifactId>lucene-highlighter</artifactId>
-            <version>8.11.2</version>
+            <version>9.8.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.lucene</groupId>
+            <artifactId>lucene-backward-codecs</artifactId>
+            <version>9.8.0</version>
         </dependency>
         <dependency>
             <groupId>com.github.magese</groupId>
             <artifactId>ik-analyzer</artifactId>
-            <version>8.5.0</version>
+            <version>9.8.0</version>
         </dependency>
 
         <!--########################################################################################################-->
@@ -289,13 +284,13 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-compiler-plugin</artifactId>
-                <version>3.8.1</version>
+                <version>3.11.0</version>
                 <configuration>
-                    <source>11</source>
-                    <target>11</target>
+                    <compilerArgs>
+                        <arg>-parameters</arg>
+                    </compilerArgs>
                 </configuration>
             </plugin>
-
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-resources-plugin</artifactId>
@@ -310,7 +305,6 @@
                     </nonFilteredFileExtensions>
                 </configuration>
             </plugin>
-
             <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>

+ 1 - 1
web/src/main/java/cn/reghao/bnt/web/admin/controller/LoginController.java

@@ -10,7 +10,7 @@ import org.springframework.http.MediaType;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;

+ 1 - 1
web/src/main/java/cn/reghao/bnt/web/admin/controller/SysFileController.java

@@ -16,7 +16,7 @@ import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 import javax.validation.constraints.NotNull;
 import java.io.IOException;
 import java.net.URLDecoder;

+ 3 - 3
web/src/main/java/cn/reghao/bnt/web/admin/model/po/AccessLog.java

@@ -7,9 +7,9 @@ import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Table;
 
 /**
  * @author reghao

+ 3 - 3
web/src/main/java/cn/reghao/bnt/web/admin/model/po/DiskFile.java

@@ -7,9 +7,9 @@ import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Table;
 
 /**
  * @author reghao

+ 2 - 2
web/src/main/java/cn/reghao/bnt/web/admin/model/po/LoginAttempt.java

@@ -3,8 +3,8 @@ package cn.reghao.bnt.web.admin.model.po;
 import cn.reghao.bnt.web.util.BaseEntity;
 import lombok.*;
 
-import javax.persistence.Entity;
-import javax.persistence.Table;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Table;
 
 /**
  * @author reghao

+ 1 - 1
web/src/main/java/cn/reghao/bnt/web/admin/model/po/Menu.java

@@ -6,7 +6,7 @@ import lombok.Getter;
 import lombok.Setter;
 import org.hibernate.validator.constraints.Length;
 
-import javax.persistence.*;
+import jakarta.persistence.*;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import javax.validation.constraints.Pattern;

+ 1 - 1
web/src/main/java/cn/reghao/bnt/web/admin/model/po/Role.java

@@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
 import lombok.*;
 import org.hibernate.validator.constraints.Length;
 
-import javax.persistence.*;
+import jakarta.persistence.*;
 import javax.validation.constraints.Pattern;
 import java.util.Set;
 

+ 3 - 3
web/src/main/java/cn/reghao/bnt/web/admin/model/po/RuntimeLog.java

@@ -6,9 +6,9 @@ import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Table;
 
 /**
  * @author reghao

+ 3 - 3
web/src/main/java/cn/reghao/bnt/web/admin/model/po/SiteOption.java

@@ -5,9 +5,9 @@ import lombok.Getter;
 import lombok.Setter;
 import org.hibernate.validator.constraints.Length;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Table;
 import javax.validation.constraints.NotNull;
 
 /**

+ 1 - 1
web/src/main/java/cn/reghao/bnt/web/admin/model/po/User.java

@@ -6,7 +6,7 @@ import org.hibernate.validator.constraints.Length;
 import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.userdetails.UserDetails;
 
-import javax.persistence.*;
+import jakarta.persistence.*;
 import javax.validation.constraints.NotBlank;
 import java.time.LocalDateTime;
 import java.util.Collection;

+ 2 - 2
web/src/main/java/cn/reghao/bnt/web/admin/model/po/UserMessage.java

@@ -5,8 +5,8 @@ import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import javax.persistence.Entity;
-import javax.persistence.Table;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Table;
 
 /**
  * @author reghao

+ 3 - 3
web/src/main/java/cn/reghao/bnt/web/admin/model/po/Webhook.java

@@ -4,9 +4,9 @@ import cn.reghao.bnt.web.util.BaseEntity;
 import lombok.Getter;
 import lombok.Setter;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Table;
 import javax.validation.constraints.NotBlank;
 
 /**

+ 4 - 4
web/src/main/java/cn/reghao/bnt/web/admin/security/ExceptionAuthenticationEntryPoint.java → web/src/main/java/cn/reghao/bnt/web/admin/security/MyAuthenticationEntryPoint.java

@@ -4,9 +4,9 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.security.core.AuthenticationException;
 import org.springframework.security.web.AuthenticationEntryPoint;
 
-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;
 
 /**
@@ -16,7 +16,7 @@ import java.io.IOException;
  * @date 2023-07-28 16:43:59
  */
 @Slf4j
-public class ExceptionAuthenticationEntryPoint implements AuthenticationEntryPoint {
+public class MyAuthenticationEntryPoint implements AuthenticationEntryPoint {
     @Override
     public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception)
             throws IOException, ServletException {

+ 93 - 32
web/src/main/java/cn/reghao/bnt/web/admin/security/WebSecurityConfig.java

@@ -1,35 +1,34 @@
 package cn.reghao.bnt.web.admin.security;
 
-import cn.reghao.bnt.web.admin.security.access.MyAccessDecisionManager;
-import cn.reghao.bnt.web.admin.security.access.MySecurityMetadataSource;
 import cn.reghao.bnt.web.admin.security.filter.LoginRedirectFilter;
 import cn.reghao.bnt.web.admin.security.form.AccountAuthFilter;
 import cn.reghao.bnt.web.admin.security.form.AccountAuthProvider;
+import cn.reghao.bnt.web.admin.security.session.MySessionAuthenticationStrategy;
 import cn.reghao.bnt.web.admin.service.AccountLoginService;
+import cn.reghao.bnt.web.admin.service.MenuService;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.security.access.hierarchicalroles.RoleHierarchy;
 import org.springframework.security.access.hierarchicalroles.RoleHierarchyImpl;
 import org.springframework.security.authentication.AuthenticationManager;
-import org.springframework.security.config.annotation.ObjectPostProcessor;
-import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
-import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
+import org.springframework.security.authorization.AuthorizationDecision;
+import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration;
 import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.builders.WebSecurity;
 import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
 import org.springframework.security.config.http.SessionCreationPolicy;
+import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.session.SessionRegistry;
-import org.springframework.security.web.access.intercept.FilterSecurityInterceptor;
+import org.springframework.security.web.SecurityFilterChain;
 import org.springframework.security.web.authentication.AuthenticationFailureHandler;
 import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
 import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
 import org.springframework.security.web.authentication.logout.LogoutHandler;
 import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;
 import org.springframework.security.web.authentication.session.*;
-import org.springframework.security.web.context.SecurityContextPersistenceFilter;
+import org.springframework.security.web.context.SecurityContextHolderFilter;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 
 /**
@@ -40,8 +39,7 @@ import java.util.List;
  */
 @Configuration
 @EnableWebSecurity
-@EnableGlobalMethodSecurity(prePostEnabled = true) // 调用方法时检查权限
-public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
+public class WebSecurityConfig {
     private final String loginPage = "/bg/login";
     private final String loginApi = "/bg/login";
     private final String logoutApi = "/bg/logout";
@@ -52,15 +50,13 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
     private final AuthenticationFailureHandler failureHandler;
     private final LogoutHandler logoutHandler;
     private final LogoutSuccessHandler logoutSuccessHandler;
-    private SessionRegistry sessionRegistry;
-    private final MyAccessDecisionManager myAccessDecisionManager;
-    private final MySecurityMetadataSource mySecurityMetadataSource;
+    private final SessionRegistry sessionRegistry;
+    private final MenuService menuService;
 
     public WebSecurityConfig(AccountAuthProvider userAuthProvider, AccountLoginService accountLoginService,
                              AuthenticationSuccessHandler successHandler, AuthenticationFailureHandler failureHandler,
                              LogoutHandler logoutHandler, LogoutSuccessHandler logoutSuccessHandler,
-                             SessionRegistry sessionRegistry, MyAccessDecisionManager myAccessDecisionManager,
-                             MySecurityMetadataSource mySecurityMetadataSource) {
+                             SessionRegistry sessionRegistry, MenuService menuService) {
         this.userAuthProvider = userAuthProvider;
         this.accountLoginService = accountLoginService;
         this.successHandler = successHandler;
@@ -68,8 +64,73 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
         this.logoutHandler = logoutHandler;
         this.logoutSuccessHandler = logoutSuccessHandler;
         this.sessionRegistry = sessionRegistry;
-        this.myAccessDecisionManager = myAccessDecisionManager;
-        this.mySecurityMetadataSource = mySecurityMetadataSource;
+        this.menuService = menuService;
+    }
+
+    @Bean
+    public SecurityFilterChain filterChain(HttpSecurity http, AuthenticationManager authenticationManager) throws Exception {
+        http
+                /*.authorizeHttpRequests(request -> request
+                        .requestMatchers("/dist/**").permitAll()
+                        .requestMatchers("/bg/dist/**").permitAll()
+                        // 不需要认证的接口
+                        .requestMatchers("/bg/api/actuator/**").permitAll()
+                        .requestMatchers(loginApi).permitAll()
+                        .requestMatchers(logoutApi).permitAll()
+                        .requestMatchers("/bg/code/**").permitAll()
+                        .requestMatchers("/bg/api/oss/**").permitAll()
+                        // 需要认证的接口
+                        .requestMatchers("/bg/**").authenticated()
+                        // 不需要认证的接口
+                        .anyRequest().permitAll())*/
+                .authorizeHttpRequests(register -> register.anyRequest().access((authentication, object) -> {
+                    String method = object.getRequest().getMethod();
+                    if (method == null) {
+                        method = "";
+                    }
+                    //获取当前请求的 URL 地址
+                    String requestUrl = object.getRequest().getRequestURI();
+                    if (requestUrl.startsWith("/dist/") || requestUrl.startsWith("/bg/dist/")) {
+                        // 放行静态资源
+                        return new AuthorizationDecision(true);
+                    }
+
+                    // 获取可访问 url 的角色集合
+                    List<String> roles = menuService.getRolesByUrl(method, requestUrl);
+                    if (roles.isEmpty()) {
+                        return new AuthorizationDecision(true);
+                    }
+
+                    //获取当前登录用户的角色
+                    Collection<? extends GrantedAuthority> authorities = authentication.get().getAuthorities();
+                    for (GrantedAuthority authority : authorities) {
+                        for (String role : roles) {
+                            if (authority.getAuthority().equals(role)) {
+                                //说明当前登录用户具备当前请求所需要的角色
+                                return new AuthorizationDecision(true);
+                            }
+                        }
+                    }
+                    return new AuthorizationDecision(false);
+                }))
+                //.securityContext((context) -> context.securityContextRepository(new HttpSessionSecurityContextRepository()))
+                .securityContext((securityContext) -> securityContext.requireExplicitSave(true))
+                .addFilterAfter(new LoginRedirectFilter(), SecurityContextHolderFilter.class)
+                .addFilterBefore(accountAuthFilter(authenticationManager), UsernamePasswordAuthenticationFilter.class)
+                .formLogin().disable()
+                .logout().logoutUrl(logoutApi).addLogoutHandler(logoutHandler).logoutSuccessHandler(logoutSuccessHandler)
+                .and()
+                .exceptionHandling().authenticationEntryPoint(new MyAuthenticationEntryPoint())
+                .and()
+                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED)
+                .and()
+                .rememberMe().disable()
+                .cors().disable()
+                .csrf().disable()
+                .headers().disable()
+                .authenticationProvider(userAuthProvider);
+
+        return http.build();
     }
 
     /**
@@ -79,14 +140,14 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
      * @return
      * @date 2023-08-02 11:09:45
      */
-    @Override
+    /*@Override
     public void configure(WebSecurity web) {
         web.ignoring()
                 .antMatchers("/dist/**")
                 .antMatchers("/bg/dist/**");
-    }
+    }*/
 
-    @Override
+    /*@Override
     public void configure(HttpSecurity http) throws Exception {
         // 在 FilterSecurityInterceptor 中用于权限判定
         http.authorizeRequests()
@@ -125,7 +186,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
 
         // 配置 ExceptionTranslationFilter, 登入认证接口失败时的处理, 不会重定向到 loginPage
         http.exceptionHandling()
-                .authenticationEntryPoint(new ExceptionAuthenticationEntryPoint());
+                .authenticationEntryPoint(new MyAuthenticationEntryPoint());
 
         // 配置 SessionManagementFilter
         http.sessionManagement()
@@ -133,8 +194,8 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
 
         // 配置 RememberMeAuthenticationFilter, 禁用 RememberMeAuthenticationFilter
         http.rememberMe().disable();
-                /*.key("DExNzAyNTQ2Nzo3NDI3MTNhYmM5MGE5")
-                .rememberMeParameter("rememberMe");*/
+                *//*.key("DExNzAyNTQ2Nzo3NDI3MTNhYmM5MGE5")
+                .rememberMeParameter("rememberMe");*//*
 
         // 配置 CorsFilter, 禁用 CorsFilter
         http.cors().disable();
@@ -144,7 +205,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
 
         // 配置 HeaderWriterFilter, 禁用 HeaderWriterFilter
         http.headers().disable();
-    }
+    }*/
 
     /**
      * 配置认证管理器
@@ -154,9 +215,8 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
      * @date 2021-07-25 下午2:28
      */
     @Bean
-    @Override
-    public AuthenticationManager authenticationManagerBean() throws Exception {
-        return super.authenticationManagerBean();
+    public AuthenticationManager authenticationManager(AuthenticationConfiguration authenticationConfiguration) throws Exception {
+        return authenticationConfiguration.getAuthenticationManager();
     }
 
     /**
@@ -166,10 +226,10 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
      * @return
      * @date 2021-07-25 下午2:31
      */
-    @Override
+    /*@Override
     protected void configure(AuthenticationManagerBuilder auth) throws Exception {
         auth.authenticationProvider(userAuthProvider);
-    }
+    }*/
 
     /**
      * 配置账号密码登入 filter
@@ -178,9 +238,9 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
      * @return
      * @date 2022-07-06 上午9:54
      */
-    public AccountAuthFilter accountAuthFilter() throws Exception {
+    public AccountAuthFilter accountAuthFilter(AuthenticationManager authenticationManager) throws Exception {
         AccountAuthFilter filter = new AccountAuthFilter(loginApi, "POST", accountLoginService);
-        filter.setAuthenticationManager(super.authenticationManager());
+        filter.setAuthenticationManager(authenticationManager);
         filter.setAuthenticationSuccessHandler(successHandler);
         filter.setAuthenticationFailureHandler(failureHandler);
         filter.setSessionAuthenticationStrategy(sessionAuthenticationStrategy(sessionRegistry));
@@ -201,6 +261,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
         authenticationStrategies.add(new SessionFixationProtectionStrategy());
         // 认证成功后将认证信息注册到 SessionRegistry
         authenticationStrategies.add(new RegisterSessionAuthenticationStrategy(sessionRegistry));
+        authenticationStrategies.add(new MySessionAuthenticationStrategy());
 
         return new CompositeSessionAuthenticationStrategy(authenticationStrategies);
     }

+ 1 - 0
web/src/main/java/cn/reghao/bnt/web/admin/security/access/MyAccessDecisionManager.java

@@ -18,6 +18,7 @@ import java.util.Collection;
  */
 @Slf4j
 @Component
+@Deprecated
 public class MyAccessDecisionManager implements AccessDecisionManager {
     @Override
     public void decide(Authentication authentication, Object object, Collection<ConfigAttribute> configAttributes)

+ 2 - 1
web/src/main/java/cn/reghao/bnt/web/admin/security/access/MySecurityMetadataSource.java

@@ -9,7 +9,7 @@ import org.springframework.security.web.access.intercept.FilterInvocationSecurit
 import org.springframework.stereotype.Component;
 import org.springframework.util.CollectionUtils;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 import java.util.Collection;
 import java.util.List;
 import java.util.Locale;
@@ -20,6 +20,7 @@ import java.util.Locale;
  */
 @Slf4j
 @Component
+@Deprecated
 public class MySecurityMetadataSource implements FilterInvocationSecurityMetadataSource {
     private final MenuService menuService;
 

+ 3 - 3
web/src/main/java/cn/reghao/bnt/web/admin/security/filter/LoginRedirectFilter.java

@@ -3,9 +3,9 @@ package cn.reghao.bnt.web.admin.security.filter;
 import org.springframework.security.core.context.SecurityContext;
 import org.springframework.security.core.context.SecurityContextHolder;
 
-import javax.servlet.*;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.*;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.IOException;
 
 /**

+ 3 - 3
web/src/main/java/cn/reghao/bnt/web/admin/security/form/AccountAuthFilter.java

@@ -8,9 +8,9 @@ import org.springframework.security.core.AuthenticationException;
 import org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter;
 import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
 
-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;
 
 /**

+ 3 - 3
web/src/main/java/cn/reghao/bnt/web/admin/security/handler/AuthFailureHandlerImpl.java

@@ -8,9 +8,9 @@ import org.springframework.security.core.AuthenticationException;
 import org.springframework.security.web.authentication.AuthenticationFailureHandler;
 import org.springframework.stereotype.Component;
 
-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.io.PrintWriter;
 

+ 4 - 4
web/src/main/java/cn/reghao/bnt/web/admin/security/handler/AuthSuccessHandlerImpl.java

@@ -10,10 +10,10 @@ import org.springframework.security.web.authentication.AuthenticationSuccessHand
 import org.springframework.security.web.savedrequest.SavedRequest;
 import org.springframework.stereotype.Component;
 
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
 import java.io.IOException;
 import java.io.PrintWriter;
 

+ 2 - 2
web/src/main/java/cn/reghao/bnt/web/admin/security/handler/LogoutHandlerImpl.java

@@ -5,8 +5,8 @@ import org.springframework.security.core.Authentication;
 import org.springframework.security.web.authentication.logout.LogoutHandler;
 import org.springframework.stereotype.Component;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 /**
  * @author reghao

+ 3 - 3
web/src/main/java/cn/reghao/bnt/web/admin/security/handler/LogoutSuccessHandlerImpl.java

@@ -4,9 +4,9 @@ import org.springframework.security.core.Authentication;
 import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;
 import org.springframework.stereotype.Component;
 
-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;
 
 /**

+ 3 - 3
web/src/main/java/cn/reghao/bnt/web/admin/security/session/HttpSessionManager.java

@@ -4,9 +4,9 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
-import javax.servlet.http.HttpSession;
-import javax.servlet.http.HttpSessionEvent;
-import javax.servlet.http.HttpSessionListener;
+import jakarta.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSessionEvent;
+import jakarta.servlet.http.HttpSessionListener;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;

+ 33 - 0
web/src/main/java/cn/reghao/bnt/web/admin/security/session/MySessionAuthenticationStrategy.java

@@ -0,0 +1,33 @@
+package cn.reghao.bnt.web.admin.security.session;
+
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.context.SecurityContext;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.security.core.context.SecurityContextHolderStrategy;
+import org.springframework.security.web.authentication.session.SessionAuthenticationStrategy;
+import org.springframework.security.web.context.HttpSessionSecurityContextRepository;
+import org.springframework.security.web.context.SecurityContextRepository;
+
+/**
+ * spring-security 6 中 使用 SecurityContextHolderFilter 代替了 SecurityContextPersistenceFilter
+ * SecurityContextHolderFilter 只会从 SecurityContextRepository 中读取 SecurityContext 并设置到 SecurityContextHolder
+ * 用户需要手动保存 SecurityContext, 这也是此类的目的
+ * 详见 https://docs.spring.io/spring-security/reference/servlet/authentication/persistence.html
+ * 和 https://docs.spring.io/spring-security/reference/servlet/authentication/session-management.html
+ *
+ * @author reghao
+ * @date 2025-10-30 16:19:50
+ */
+public class MySessionAuthenticationStrategy implements SessionAuthenticationStrategy {
+    private final SecurityContextRepository securityContextRepository = new HttpSessionSecurityContextRepository();
+
+    public void onAuthentication(Authentication authentication, HttpServletRequest request, HttpServletResponse response) {
+        SecurityContextHolderStrategy securityContextHolderStrategy = SecurityContextHolder.getContextHolderStrategy();
+        SecurityContext context = securityContextHolderStrategy.createEmptyContext();
+        context.setAuthentication(authentication);
+        securityContextHolderStrategy.setContext(context);
+        securityContextRepository.saveContext(context, request, response);
+    }
+}

+ 2 - 2
web/src/main/java/cn/reghao/bnt/web/admin/security/session/MySessionInformationExpiredStrategy.java

@@ -6,8 +6,8 @@ import org.springframework.security.web.session.SessionInformationExpiredEvent;
 import org.springframework.security.web.session.SessionInformationExpiredStrategy;
 import org.springframework.stereotype.Component;
 
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.IOException;
 
 /**

+ 2 - 2
web/src/main/java/cn/reghao/bnt/web/admin/service/FileService.java

@@ -19,8 +19,8 @@ import org.springframework.data.domain.Sort;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.annotation.PostConstruct;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.annotation.PostConstruct;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.*;
 import java.nio.file.Files;
 import java.nio.file.Path;

+ 1 - 1
web/src/main/java/cn/reghao/bnt/web/admin/service/impl/AccountLoginServiceImpl.java

@@ -17,7 +17,7 @@ import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.security.web.authentication.preauth.PreAuthenticatedCredentialsNotFoundException;
 import org.springframework.stereotype.Service;
 
-import javax.servlet.http.Cookie;
+import jakarta.servlet.http.Cookie;
 
 /**
  * @author reghao

+ 4 - 4
web/src/main/java/cn/reghao/bnt/web/admin/service/impl/AccountServiceImpl.java

@@ -22,10 +22,10 @@ import org.springframework.data.jpa.domain.Specification;
 import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.stereotype.Service;
 
-import javax.persistence.criteria.Join;
-import javax.persistence.criteria.JoinType;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.SetJoin;
+import jakarta.persistence.criteria.Join;
+import jakarta.persistence.criteria.JoinType;
+import jakarta.persistence.criteria.Predicate;
+import jakarta.persistence.criteria.SetJoin;
 import java.util.*;
 import java.util.stream.Collectors;
 

+ 1 - 1
web/src/main/java/cn/reghao/bnt/web/admin/service/impl/LoginAttemptServiceImpl.java

@@ -17,7 +17,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.security.web.authentication.preauth.PreAuthenticatedCredentialsNotFoundException;
 import org.springframework.stereotype.Service;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 import java.util.List;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.ScheduledFuture;

+ 2 - 2
web/src/main/java/cn/reghao/bnt/web/admin/service/impl/RoleServiceImpl.java

@@ -14,8 +14,8 @@ import org.springframework.data.domain.PageRequest;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
 
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.SetJoin;
+import jakarta.persistence.criteria.Predicate;
+import jakarta.persistence.criteria.SetJoin;
 import java.util.*;
 import java.util.stream.Collectors;
 

+ 1 - 1
web/src/main/java/cn/reghao/bnt/web/blog/controller/AdminArticleController.java

@@ -21,7 +21,7 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.ServletRequestUtils;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 import java.util.List;
 
 /**

+ 1 - 1
web/src/main/java/cn/reghao/bnt/web/blog/controller/AdminQuestionController.java

@@ -20,7 +20,7 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.ServletRequestUtils;
 import org.springframework.web.bind.annotation.*;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 import java.util.List;
 
 /**

+ 1 - 1
web/src/main/java/cn/reghao/bnt/web/blog/controller/ForegroundController.java

@@ -24,7 +24,7 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.ResponseBody;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 import java.io.IOException;
 import java.net.URLDecoder;
 import java.nio.charset.StandardCharsets;

+ 1 - 1
web/src/main/java/cn/reghao/bnt/web/blog/hibernate/HibernateLucene.java

@@ -6,7 +6,7 @@ import org.hibernate.search.mapper.orm.Search;
 import org.hibernate.search.mapper.orm.session.SearchSession;
 import org.springframework.stereotype.Service;
 
-import javax.persistence.EntityManagerFactory;
+import jakarta.persistence.EntityManagerFactory;
 import java.util.List;
 
 /**

+ 1 - 1
web/src/main/java/cn/reghao/bnt/web/blog/hibernate/HibernateQuery.java

@@ -22,7 +22,7 @@ import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 import org.wltea.analyzer.lucene.IKAnalyzer;
 
-import javax.persistence.EntityManagerFactory;
+import jakarta.persistence.EntityManagerFactory;
 import java.util.List;
 import java.util.stream.Collectors;
 

+ 2 - 2
web/src/main/java/cn/reghao/bnt/web/blog/model/po/AboutView.java

@@ -6,8 +6,8 @@ import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import javax.persistence.Entity;
-import javax.persistence.Table;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Table;
 
 /**
  * @author reghao

+ 3 - 3
web/src/main/java/cn/reghao/bnt/web/blog/model/po/Article.java

@@ -12,9 +12,9 @@ import org.hibernate.search.mapper.pojo.mapping.definition.annotation.FullTextFi
 import org.hibernate.search.mapper.pojo.mapping.definition.annotation.Indexed;
 import org.hibernate.search.mapper.pojo.mapping.definition.annotation.KeywordField;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Table;
 import java.time.LocalDateTime;
 import java.util.List;
 

+ 3 - 3
web/src/main/java/cn/reghao/bnt/web/blog/model/po/ArticleTag.java

@@ -6,9 +6,9 @@ import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Table;
 
 /**
  * @author reghao

+ 2 - 2
web/src/main/java/cn/reghao/bnt/web/blog/model/po/ArticleView.java

@@ -5,8 +5,8 @@ import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import javax.persistence.Entity;
-import javax.persistence.Table;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Table;
 
 /**
  * @author reghao

+ 3 - 3
web/src/main/java/cn/reghao/bnt/web/blog/model/po/Category.java

@@ -5,9 +5,9 @@ import lombok.AllArgsConstructor;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Table;
 
 /**
  * @author reghao

+ 3 - 3
web/src/main/java/cn/reghao/bnt/web/blog/model/po/Question.java

@@ -12,9 +12,9 @@ import org.hibernate.search.mapper.pojo.mapping.definition.annotation.FullTextFi
 import org.hibernate.search.mapper.pojo.mapping.definition.annotation.Indexed;
 import org.hibernate.search.mapper.pojo.mapping.definition.annotation.KeywordField;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Table;
 import java.time.LocalDateTime;
 
 /**

+ 1 - 1
web/src/main/java/cn/reghao/bnt/web/blog/service/ArticleQuery.java

@@ -17,7 +17,7 @@ import org.springframework.data.domain.*;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
 
-import javax.persistence.criteria.Predicate;
+import jakarta.persistence.criteria.Predicate;
 import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;

+ 1 - 1
web/src/main/java/cn/reghao/bnt/web/blog/service/QuestionService.java

@@ -15,7 +15,7 @@ import org.springframework.data.domain.*;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
 
-import javax.persistence.criteria.Predicate;
+import jakarta.persistence.criteria.Predicate;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;

+ 2 - 2
web/src/main/java/cn/reghao/bnt/web/config/AccessInterceptor.java

@@ -11,8 +11,8 @@ import org.springframework.stereotype.Component;
 import org.springframework.web.servlet.HandlerInterceptor;
 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.util.Set;
 import java.util.UUID;
 

+ 1 - 1
web/src/main/java/cn/reghao/bnt/web/config/log/MyLogbackAppender.java

@@ -10,7 +10,7 @@ import cn.reghao.jutil.jdk.result.AppLog;
 import lombok.Getter;
 import lombok.Setter;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 
 /**
  * @author reghao

+ 3 - 3
web/src/main/java/cn/reghao/bnt/web/config/spring/SpringLifecycle.java

@@ -29,7 +29,7 @@ import org.springframework.web.servlet.mvc.condition.PatternsRequestCondition;
 import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
 import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
 
-import javax.servlet.ServletContext;
+import jakarta.servlet.ServletContext;
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
@@ -89,7 +89,7 @@ public class SpringLifecycle implements ApplicationRunner, DisposableBean, Servl
     }
 
     private void initSys() {
-        initForegroundUrlsPrefix();
+        //initForegroundUrlsPrefix();
         builderInit.init();
     }
 
@@ -129,7 +129,7 @@ public class SpringLifecycle implements ApplicationRunner, DisposableBean, Servl
     public void onApplicationReady() {
         log.info("Application is ready! You can start processing requests.");
         // 在这里执行初始化逻辑
-        initLogger();
+        //initLogger();
     }
 
     private void initLogger() {

+ 3 - 3
web/src/main/java/cn/reghao/bnt/web/config/web/CorsFilter.java

@@ -2,9 +2,9 @@ package cn.reghao.bnt.web.config.web;
 
 import org.apache.http.HttpStatus;
 
-import javax.servlet.*;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.*;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.util.List;
 

+ 1 - 1
web/src/main/java/cn/reghao/bnt/web/config/web/exception/ControllerErrorHandler.java

@@ -7,7 +7,7 @@ import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.RequestMapping;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 
 /**
  * 处理 controller 返回的错误, 替换默认的 BasicErrorController

+ 1 - 1
web/src/main/java/cn/reghao/bnt/web/config/web/exception/ControllerExceptionHandler.java

@@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.ExceptionHandler;
 import org.springframework.web.servlet.ModelAndView;
 import org.springframework.web.servlet.view.json.MappingJackson2JsonView;
 
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
 import java.util.stream.Collectors;
 
 /**

+ 3 - 3
web/src/main/java/cn/reghao/bnt/web/devops/aliyun/model/po/AliyunAccount.java

@@ -6,9 +6,9 @@ import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Table;
 
 /**
  * @author reghao

+ 1 - 1
web/src/main/java/cn/reghao/bnt/web/devops/aliyun/service/AliyunCdn.java

@@ -14,7 +14,7 @@ import com.aliyun.teaopenapi.models.Config;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
 
-import javax.annotation.PostConstruct;
+import jakarta.annotation.PostConstruct;
 import java.time.LocalDateTime;
 import java.util.List;
 import java.util.Map;

+ 1 - 1
web/src/main/java/cn/reghao/bnt/web/devops/aliyun/service/AliyunOss.java

@@ -8,7 +8,7 @@ import com.aliyun.oss.model.*;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
 
-import javax.annotation.PostConstruct;
+import jakarta.annotation.PostConstruct;
 import java.io.File;
 import java.io.IOException;
 import java.net.URL;

+ 1 - 1
web/src/main/java/cn/reghao/bnt/web/devops/app/db/query/impl/AppBuildQueryImpl.java

@@ -20,7 +20,7 @@ import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
 
-import javax.persistence.criteria.Predicate;
+import jakarta.persistence.criteria.Predicate;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;

+ 3 - 3
web/src/main/java/cn/reghao/bnt/web/devops/app/db/query/impl/AppDeployQueryImpl.java

@@ -26,9 +26,9 @@ import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
 
-import javax.persistence.criteria.Join;
-import javax.persistence.criteria.JoinType;
-import javax.persistence.criteria.Predicate;
+import jakarta.persistence.criteria.Join;
+import jakarta.persistence.criteria.JoinType;
+import jakarta.persistence.criteria.Predicate;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;

+ 3 - 3
web/src/main/java/cn/reghao/bnt/web/devops/app/model/po/AppBuilding.java

@@ -9,9 +9,9 @@ import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import javax.persistence.Entity;
-import javax.persistence.OneToOne;
-import javax.persistence.Table;
+import jakarta.persistence.Entity;
+import jakarta.persistence.OneToOne;
+import jakarta.persistence.Table;
 import java.time.LocalDateTime;
 
 /**

+ 1 - 1
web/src/main/java/cn/reghao/bnt/web/devops/app/model/po/AppDeploying.java

@@ -10,7 +10,7 @@ import lombok.Setter;
 import org.hibernate.annotations.LazyCollection;
 import org.hibernate.annotations.LazyCollectionOption;
 
-import javax.persistence.*;
+import jakarta.persistence.*;
 import javax.validation.constraints.NotNull;
 import java.util.List;
 

+ 2 - 2
web/src/main/java/cn/reghao/bnt/web/devops/app/model/po/AppDeployingNode.java

@@ -6,8 +6,8 @@ import cn.reghao.jutil.jdk.result.NotAvailable;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
-import javax.persistence.Embeddable;
-import javax.persistence.OneToOne;
+import jakarta.persistence.Embeddable;
+import jakarta.persistence.OneToOne;
 import java.io.Serializable;
 import java.time.LocalDateTime;
 

+ 1 - 1
web/src/main/java/cn/reghao/bnt/web/devops/app/model/po/config/AppConfig.java

@@ -16,7 +16,7 @@ import lombok.NoArgsConstructor;
 import lombok.Setter;
 import org.hibernate.validator.constraints.Length;
 
-import javax.persistence.*;
+import jakarta.persistence.*;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 

+ 4 - 4
web/src/main/java/cn/reghao/bnt/web/devops/app/model/po/config/AppDeployConfig.java

@@ -6,10 +6,10 @@ import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.OneToOne;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.OneToOne;
+import jakarta.persistence.Table;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 

+ 2 - 2
web/src/main/java/cn/reghao/bnt/web/devops/app/model/po/log/BuildConfigSnapshot.java

@@ -6,8 +6,8 @@ import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import javax.persistence.Column;
-import javax.persistence.Embeddable;
+import jakarta.persistence.Column;
+import jakarta.persistence.Embeddable;
 
 /**
  * 对 BuildConfig 的一个 snapshot

+ 1 - 1
web/src/main/java/cn/reghao/bnt/web/devops/app/model/po/log/BuildConsumed.java

@@ -5,7 +5,7 @@ import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import javax.persistence.Embeddable;
+import jakarta.persistence.Embeddable;
 
 /**
  * 构建各阶段耗费的时间

+ 1 - 1
web/src/main/java/cn/reghao/bnt/web/devops/app/model/po/log/BuildLog.java

@@ -10,7 +10,7 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 
-import javax.persistence.*;
+import jakarta.persistence.*;
 import java.time.LocalDateTime;
 
 /**

+ 1 - 1
web/src/main/java/cn/reghao/bnt/web/devops/app/model/po/log/DeployLog.java

@@ -8,7 +8,7 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 
-import javax.persistence.*;
+import jakarta.persistence.*;
 import java.time.LocalDateTime;
 
 /**

+ 1 - 1
web/src/main/java/cn/reghao/bnt/web/devops/build/model/po/CompilerBind.java

@@ -5,7 +5,7 @@ import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import javax.persistence.Embeddable;
+import jakarta.persistence.Embeddable;
 
 /**
  * @author reghao

+ 1 - 1
web/src/main/java/cn/reghao/bnt/web/devops/build/model/po/CompilerConfig.java

@@ -13,7 +13,7 @@ import org.hibernate.annotations.LazyCollectionOption;
 import org.hibernate.validator.constraints.Length;
 import org.hibernate.validator.group.GroupSequenceProvider;
 
-import javax.persistence.*;
+import jakarta.persistence.*;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.Pattern;
 import java.util.List;

+ 3 - 3
web/src/main/java/cn/reghao/bnt/web/devops/build/model/po/DockerRegistry.java

@@ -6,9 +6,9 @@ import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Table;
 import javax.validation.constraints.NotBlank;
 
 /**

+ 4 - 4
web/src/main/java/cn/reghao/bnt/web/devops/build/model/po/PackerConfig.java

@@ -12,10 +12,10 @@ import lombok.Setter;
 import org.hibernate.validator.constraints.Length;
 import org.hibernate.validator.group.GroupSequenceProvider;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.OneToOne;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.OneToOne;
+import jakarta.persistence.Table;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import javax.validation.constraints.Pattern;

+ 3 - 3
web/src/main/java/cn/reghao/bnt/web/devops/build/model/po/RepoAuthConfig.java

@@ -11,9 +11,9 @@ import lombok.Setter;
 import org.hibernate.validator.constraints.Length;
 import org.hibernate.validator.group.GroupSequenceProvider;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Table;
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.Pattern;
 

+ 4 - 4
web/src/main/java/cn/reghao/bnt/web/devops/machine/model/po/MachineHost.java

@@ -5,10 +5,10 @@ import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.OneToOne;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.OneToOne;
+import jakarta.persistence.Table;
 import javax.validation.constraints.NotNull;
 
 /**

+ 3 - 3
web/src/main/java/cn/reghao/bnt/web/devops/machine/model/po/MachineInfo.java

@@ -9,9 +9,9 @@ import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Table;
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Table;
 import javax.validation.constraints.NotNull;
 import java.util.List;
 

+ 2 - 2
web/src/main/java/cn/reghao/bnt/web/devops/machine/service/impl/MachineQueryImpl.java

@@ -17,8 +17,8 @@ import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
 
-import javax.persistence.criteria.Expression;
-import javax.persistence.criteria.Predicate;
+import jakarta.persistence.criteria.Expression;
+import jakarta.persistence.criteria.Predicate;
 import java.util.*;
 import java.util.stream.Collectors;
 

+ 1 - 1
web/src/main/java/cn/reghao/bnt/web/template/TemplateConfiguration.java

@@ -6,7 +6,7 @@ import org.springframework.context.ApplicationContext;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.scheduling.annotation.EnableAsync;
 
-import javax.annotation.PostConstruct;
+import jakarta.annotation.PostConstruct;
 import java.util.HashMap;
 import java.util.Map;
 

+ 1 - 1
web/src/main/java/cn/reghao/bnt/web/util/BaseEntity.java

@@ -5,7 +5,7 @@ import lombok.Setter;
 import org.hibernate.annotations.CreationTimestamp;
 import org.hibernate.annotations.UpdateTimestamp;
 
-import javax.persistence.*;
+import jakarta.persistence.*;
 import java.io.Serializable;
 import java.time.LocalDateTime;
 

+ 2 - 2
web/src/main/java/cn/reghao/bnt/web/util/PageSort.java

@@ -6,8 +6,8 @@ import org.springframework.util.StringUtils;
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 /**
  * Hibernate 分页

+ 1 - 1
web/src/main/java/cn/reghao/bnt/web/util/UploadDownload.java

@@ -2,7 +2,7 @@ package cn.reghao.bnt.web.util;
 
 import org.springframework.stereotype.Service;
 
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
 import java.io.*;
 import java.net.URLEncoder;
 import java.nio.charset.StandardCharsets;

+ 2 - 2
web/src/main/resources/logback-spring.xml

@@ -37,8 +37,8 @@
     <!-- 根据 spring 的不同环境使用不同的日志配置 -->
     <springProfile name="dev">
         <root level="info">
-            <!--<appender-ref ref="consoleAppender"></appender-ref>-->
-            <appender-ref ref="myLogbackAppender"></appender-ref>
+            <appender-ref ref="consoleAppender"></appender-ref>
+            <!--<appender-ref ref="myLogbackAppender"></appender-ref>-->
             <appender-ref ref="rollingFileAppender"></appender-ref>
         </root>
     </springProfile>

+ 6 - 6
web/src/test/java/JpaTest.java

@@ -10,12 +10,12 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.ActiveProfiles;
 
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.Query;
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Root;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.EntityManagerFactory;
+import jakarta.persistence.Query;
+import jakarta.persistence.criteria.CriteriaBuilder;
+import jakarta.persistence.criteria.CriteriaQuery;
+import jakarta.persistence.criteria.Root;
 import java.time.LocalDate;
 import java.util.*;