diff --git a/jeecg-boot-base-core/pom.xml b/jeecg-boot-base-core/pom.xml
index bf2fe06d0..52746d91f 100644
--- a/jeecg-boot-base-core/pom.xml
+++ b/jeecg-boot-base-core/pom.xml
@@ -9,6 +9,10 @@
4.0.0
jeecg-boot-base-core
+
+ 3.1.5
+
+
aliyun
@@ -105,14 +109,14 @@
com.alibaba
- druid-spring-boot-starter
+ druid-spring-boot-3-starter
${druid.version}
com.baomidou
- dynamic-datasource-spring-boot-starter
+ dynamic-datasource-spring-boot3-starter
${dynamic-datasource-spring-boot-starter.version}
@@ -164,6 +168,12 @@
org.apache.shiro
shiro-spring-boot-starter
${shiro.version}
+
+
+ org.apache.shiro
+ shiro-spring
+
+
@@ -181,11 +191,54 @@
+
+
+ redis.clients
+ jedis
+ 2.9.0
+
+
+
+ org.apache.shiro
+ shiro-spring
+ jakarta
+ ${shiro.version}
+
+
+
+ org.apache.shiro
+ shiro-core
+
+
+ org.apache.shiro
+ shiro-web
+
+
+
+
+
+ org.apache.shiro
+ shiro-core
+ jakarta
+ ${shiro.version}
+
+
+ org.apache.shiro
+ shiro-web
+ jakarta
+ ${shiro.version}
+
+
+ org.apache.shiro
+ shiro-core
+
+
+
com.github.xiaoymin
- knife4j-spring-boot-starter
+ knife4j-openapi3-jakarta-spring-boot-starter
${knife4j-spring-boot-starter.version}
@@ -242,6 +295,16 @@
com.xkcoding.justauth
justauth-spring-boot-starter
+
+
+ org.springframework.boot
+ spring-boot-autoconfigure
+
+
+ org.springframework.boot
+ spring-boot-configuration-processor
+
+
com.squareup.okhttp3
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/FileDownDTO.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/FileDownDTO.java
index 552655c3b..c2f744f58 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/FileDownDTO.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/FileDownDTO.java
@@ -2,7 +2,7 @@ package org.jeecg.common.api.dto;
import lombok.Data;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import java.io.Serializable;
/**
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/vo/Result.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/vo/Result.java
index 53b239711..2db1edc28 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/vo/Result.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/vo/Result.java
@@ -1,8 +1,7 @@
package org.jeecg.common.api.vo;
import com.fasterxml.jackson.annotation.JsonIgnore;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.jeecg.common.constant.CommonConstant;
@@ -15,7 +14,7 @@ import java.io.Serializable;
* @date 2019年1月19日
*/
@Data
-@ApiModel(value="接口返回对象", description="接口返回对象")
+@Schema(description="接口返回对象")
public class Result implements Serializable {
private static final long serialVersionUID = 1L;
@@ -23,31 +22,31 @@ public class Result implements Serializable {
/**
* 成功标志
*/
- @ApiModelProperty(value = "成功标志")
+ @Schema(description = "成功标志")
private boolean success = true;
/**
* 返回处理消息
*/
- @ApiModelProperty(value = "返回处理消息")
+ @Schema(description = "返回处理消息")
private String message = "";
/**
* 返回代码
*/
- @ApiModelProperty(value = "返回代码")
+ @Schema(description = "返回代码")
private Integer code = 0;
/**
* 返回数据对象 data
*/
- @ApiModelProperty(value = "返回数据对象")
+ @Schema(description = "返回数据对象")
private T result;
/**
* 时间戳
*/
- @ApiModelProperty(value = "时间戳")
+ @Schema(description = "时间戳")
private long timestamp = System.currentTimeMillis();
public Result() {
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/AutoLogAspect.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/AutoLogAspect.java
index 7738835c7..71f97672c 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/AutoLogAspect.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/AutoLogAspect.java
@@ -24,10 +24,10 @@ import org.springframework.core.LocalVariableTableParameterNameDiscoverer;
import org.springframework.stereotype.Component;
import org.springframework.validation.BindingResult;
import org.springframework.web.multipart.MultipartFile;
-import javax.annotation.Resource;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.annotation.Resource;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
import java.lang.reflect.Method;
import java.util.Date;
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/PermissionDataAspect.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/PermissionDataAspect.java
index 06575a3e7..d4eeab4ae 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/PermissionDataAspect.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/PermissionDataAspect.java
@@ -21,7 +21,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import java.lang.reflect.Method;
import java.util.List;
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/base/controller/JeecgController.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/base/controller/JeecgController.java
index f3ff51edd..b4505d78b 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/base/controller/JeecgController.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/base/controller/JeecgController.java
@@ -23,9 +23,9 @@ import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
-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.io.IOException;
import java.util.*;
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/base/entity/JeecgEntity.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/base/entity/JeecgEntity.java
index 2eebaffdd..f1f39b729 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/base/entity/JeecgEntity.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/base/entity/JeecgEntity.java
@@ -9,10 +9,10 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
+import io.swagger.v3.oas.annotations.media.Schema;
/**
* @Description: Entity基类
@@ -30,20 +30,20 @@ public class JeecgEntity implements Serializable {
* ID
*/
@TableId(type = IdType.ASSIGN_ID)
- @ApiModelProperty(value = "ID")
+ @Schema(description = "ID")
private java.lang.String id;
/**
* 创建人
*/
- @ApiModelProperty(value = "创建人")
+ @Schema(description = "创建人")
@Excel(name = "创建人", width = 15)
private java.lang.String createBy;
/**
* 创建时间
*/
- @ApiModelProperty(value = "创建时间")
+ @Schema(description = "创建时间")
@Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@@ -52,14 +52,14 @@ public class JeecgEntity implements Serializable {
/**
* 更新人
*/
- @ApiModelProperty(value = "更新人")
+ @Schema(description = "更新人")
@Excel(name = "更新人", width = 15)
private java.lang.String updateBy;
/**
* 更新时间
*/
- @ApiModelProperty(value = "更新时间")
+ @Schema(description = "更新时间")
@Excel(name = "更新时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/util/JeecgDataAutorUtils.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/util/JeecgDataAutorUtils.java
index 9dc53e545..66e48cc1f 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/util/JeecgDataAutorUtils.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/util/JeecgDataAutorUtils.java
@@ -5,7 +5,7 @@ import org.jeecg.common.system.vo.SysUserCacheInfo;
import org.jeecg.common.util.SpringContextUtils;
import org.springframework.util.StringUtils;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/util/JwtUtil.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/util/JwtUtil.java
index 5d5475106..7365ece60 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/util/JwtUtil.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/util/JwtUtil.java
@@ -11,10 +11,10 @@ import com.google.common.base.Joiner;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Date;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils;
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/BrowserUtils.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/BrowserUtils.java
index 08b3fbcb1..479a9174b 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/BrowserUtils.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/BrowserUtils.java
@@ -5,7 +5,7 @@ import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
/**
*
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/CommonUtils.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/CommonUtils.java
index fbd328d95..4c4bb7275 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/CommonUtils.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/CommonUtils.java
@@ -19,7 +19,7 @@ import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.multipart.MultipartFile;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import javax.sql.DataSource;
import java.io.ByteArrayInputStream;
import java.io.File;
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/IpUtils.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/IpUtils.java
index 01b9d6be5..4df9e4c3d 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/IpUtils.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/IpUtils.java
@@ -1,6 +1,6 @@
package org.jeecg.common.util;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.jeecg.common.constant.CommonConstant;
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/SpringContextUtils.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/SpringContextUtils.java
index bd46b7d82..8a6a4aa44 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/SpringContextUtils.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/SpringContextUtils.java
@@ -1,7 +1,7 @@
package org.jeecg.common.util;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.constant.ServiceNameConstants;
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/TokenUtils.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/TokenUtils.java
index 7d1e61151..377b4f4fa 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/TokenUtils.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/TokenUtils.java
@@ -11,7 +11,7 @@ import org.jeecg.common.exception.JeecgBoot401Exception;
import org.jeecg.common.system.util.JwtUtil;
import org.jeecg.common.system.vo.LoginUser;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
/**
* @Author scott
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/oConvertUtils.java b/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/oConvertUtils.java
index 064359247..6366ee2de 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/oConvertUtils.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/oConvertUtils.java
@@ -7,7 +7,7 @@ import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.constant.SymbolConstant;
import org.springframework.beans.BeanUtils;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/config/AutoPoiDictConfig.java b/jeecg-boot-base-core/src/main/java/org/jeecg/config/AutoPoiDictConfig.java
index 93f571c68..a21ab3540 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/config/AutoPoiDictConfig.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/config/AutoPoiDictConfig.java
@@ -3,7 +3,7 @@ package org.jeecg.config;
import java.util.ArrayList;
import java.util.List;
-import javax.annotation.Resource;
+import jakarta.annotation.Resource;
import org.jeecg.common.api.CommonAPI;
import org.jeecg.common.system.vo.DictModel;
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/config/DruidConfig.java b/jeecg-boot-base-core/src/main/java/org/jeecg/config/DruidConfig.java
index 7659172ba..84b33f5a5 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/config/DruidConfig.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/config/DruidConfig.java
@@ -2,7 +2,9 @@ package org.jeecg.config;
import java.io.IOException;
-import javax.servlet.*;
+import com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceAutoConfigure;
+import com.alibaba.druid.spring.boot3.autoconfigure.properties.DruidStatProperties;
+import jakarta.servlet.*;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@@ -11,8 +13,6 @@ import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure;
-import com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties;
import com.alibaba.druid.util.Utils;
/**
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/config/Swagger2Config.java b/jeecg-boot-base-core/src/main/java/org/jeecg/config/Swagger2Config.java
index 92e962e15..442988e1c 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/config/Swagger2Config.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/config/Swagger2Config.java
@@ -1,183 +1,183 @@
-package org.jeecg.config;
-
-
-import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
-import io.swagger.annotations.ApiOperation;
-import org.jeecg.common.constant.CommonConstant;
-import org.springframework.beans.BeansException;
-import org.springframework.beans.factory.config.BeanPostProcessor;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
-import org.springframework.util.ReflectionUtils;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-import org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping;
-import springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration;
-import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.ParameterBuilder;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.oas.annotations.EnableOpenApi;
-import springfox.documentation.schema.ModelRef;
-import springfox.documentation.service.*;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spi.service.contexts.SecurityContext;
-import springfox.documentation.spring.web.plugins.Docket;
-import springfox.documentation.spring.web.plugins.WebFluxRequestHandlerProvider;
-import springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider;
-import springfox.documentation.swagger2.annotations.EnableSwagger2;
-
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * @Author scott
- */
-@Configuration
-@EnableSwagger2 //开启 Swagger2
-@EnableKnife4j //开启 knife4j,可以不写
-@Import(BeanValidatorPluginsConfiguration.class)
-public class Swagger2Config implements WebMvcConfigurer {
-
- /**
- *
- * 显示swagger-ui.html文档展示页,还必须注入swagger资源:
- *
- * @param registry
- */
- @Override
- public void addResourceHandlers(ResourceHandlerRegistry registry) {
- registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
- registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
- registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
- }
-
- /**
- * swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等
- *
- * @return Docket
- */
- @Bean(value = "defaultApi2")
- public Docket defaultApi2() {
- return new Docket(DocumentationType.SWAGGER_2)
- .apiInfo(apiInfo())
- .select()
- //此包路径下的类,才生成接口文档
- .apis(RequestHandlerSelectors.basePackage("org.jeecg"))
- //加了ApiOperation注解的类,才生成接口文档
- .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
- .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
- .paths(PathSelectors.any())
- .build()
- .securitySchemes(Collections.singletonList(securityScheme()))
- .securityContexts(securityContexts())
- .globalOperationParameters(setHeaderToken());
- }
-
- /***
- * oauth2配置
- * 需要增加swagger授权回调地址
- * http://localhost:8888/webjars/springfox-swagger-ui/o2c.html
- * @return
- */
- @Bean
- SecurityScheme securityScheme() {
- return new ApiKey(CommonConstant.X_ACCESS_TOKEN, CommonConstant.X_ACCESS_TOKEN, "header");
- }
- /**
- * JWT token
- * @return
- */
- private List setHeaderToken() {
- ParameterBuilder tokenPar = new ParameterBuilder();
- List pars = new ArrayList<>();
- tokenPar.name(CommonConstant.X_ACCESS_TOKEN).description("token").modelRef(new ModelRef("string")).parameterType("header").required(false).build();
- pars.add(tokenPar.build());
- return pars;
- }
-
- /**
- * api文档的详细信息函数,注意这里的注解引用的是哪个
- *
- * @return
- */
- private ApiInfo apiInfo() {
- return new ApiInfoBuilder()
- // //大标题
- .title("JeecgBoot 后台服务API接口文档")
- // 版本号
- .version("1.0")
-// .termsOfServiceUrl("NO terms of service")
- // 描述
- .description("后台API接口")
- // 作者
- .contact(new Contact("北京国炬信息技术有限公司","www.jeccg.com","jeecgos@163.com"))
- .license("The Apache License, Version 2.0")
- .licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html")
- .build();
- }
-
- /**
- * 新增 securityContexts 保持登录状态
- */
- private List securityContexts() {
- return new ArrayList(
- Collections.singleton(SecurityContext.builder()
- .securityReferences(defaultAuth())
- .forPaths(PathSelectors.regex("^(?!auth).*$"))
- .build())
- );
- }
-
- private List defaultAuth() {
- AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
- AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
- authorizationScopes[0] = authorizationScope;
- return new ArrayList(
- Collections.singleton(new SecurityReference(CommonConstant.X_ACCESS_TOKEN, authorizationScopes)));
- }
-
- /**
- * 解决springboot2.6 和springfox不兼容问题
- * @return
- */
- @Bean
- public static BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() {
- return new BeanPostProcessor() {
-
- @Override
- public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
- if (bean instanceof WebMvcRequestHandlerProvider || bean instanceof WebFluxRequestHandlerProvider) {
- customizeSpringfoxHandlerMappings(getHandlerMappings(bean));
- }
- return bean;
- }
-
- private void customizeSpringfoxHandlerMappings(List mappings) {
- List copy = mappings.stream()
- .filter(mapping -> mapping.getPatternParser() == null)
- .collect(Collectors.toList());
- mappings.clear();
- mappings.addAll(copy);
- }
-
- @SuppressWarnings("unchecked")
- private List getHandlerMappings(Object bean) {
- try {
- Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings");
- field.setAccessible(true);
- return (List) field.get(bean);
- } catch (IllegalArgumentException | IllegalAccessException e) {
- throw new IllegalStateException(e);
- }
- }
- };
- }
-
-
-}
+//package org.jeecg.config;
+//
+//
+//import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
+//import io.swagger.annotations.ApiOperation;
+//import org.jeecg.common.constant.CommonConstant;
+//import org.springframework.beans.BeansException;
+//import org.springframework.beans.factory.config.BeanPostProcessor;
+//import org.springframework.context.annotation.Bean;
+//import org.springframework.context.annotation.Configuration;
+//import org.springframework.context.annotation.Import;
+//import org.springframework.util.ReflectionUtils;
+//import org.springframework.web.bind.annotation.RestController;
+//import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+//import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+//import org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping;
+//import springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration;
+//import springfox.documentation.builders.ApiInfoBuilder;
+//import springfox.documentation.builders.ParameterBuilder;
+//import springfox.documentation.builders.PathSelectors;
+//import springfox.documentation.builders.RequestHandlerSelectors;
+//import springfox.documentation.oas.annotations.EnableOpenApi;
+//import springfox.documentation.schema.ModelRef;
+//import springfox.documentation.service.*;
+//import springfox.documentation.spi.DocumentationType;
+//import springfox.documentation.spi.service.contexts.SecurityContext;
+//import springfox.documentation.spring.web.plugins.Docket;
+//import springfox.documentation.spring.web.plugins.WebFluxRequestHandlerProvider;
+//import springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider;
+//import springfox.documentation.swagger2.annotations.EnableSwagger2;
+//
+//import java.lang.reflect.Field;
+//import java.util.ArrayList;
+//import java.util.Collections;
+//import java.util.List;
+//import java.util.stream.Collectors;
+//
+///**
+// * @Author scott
+// */
+//@Configuration
+//@EnableSwagger2 //开启 Swagger2
+//@EnableKnife4j //开启 knife4j,可以不写
+//@Import(BeanValidatorPluginsConfiguration.class)
+//public class Swagger2Config implements WebMvcConfigurer {
+//
+// /**
+// *
+// * 显示swagger-ui.html文档展示页,还必须注入swagger资源:
+// *
+// * @param registry
+// */
+// @Override
+// public void addResourceHandlers(ResourceHandlerRegistry registry) {
+// registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
+// registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
+// registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
+// }
+//
+// /**
+// * swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等
+// *
+// * @return Docket
+// */
+// @Bean(value = "defaultApi2")
+// public Docket defaultApi2() {
+// return new Docket(DocumentationType.SWAGGER_2)
+// .apiInfo(apiInfo())
+// .select()
+// //此包路径下的类,才生成接口文档
+// .apis(RequestHandlerSelectors.basePackage("org.jeecg"))
+// //加了ApiOperation注解的类,才生成接口文档
+// .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
+// .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
+// .paths(PathSelectors.any())
+// .build()
+// .securitySchemes(Collections.singletonList(securityScheme()))
+// .securityContexts(securityContexts())
+// .globalOperationParameters(setHeaderToken());
+// }
+//
+// /***
+// * oauth2配置
+// * 需要增加swagger授权回调地址
+// * http://localhost:8888/webjars/springfox-swagger-ui/o2c.html
+// * @return
+// */
+// @Bean
+// SecurityScheme securityScheme() {
+// return new ApiKey(CommonConstant.X_ACCESS_TOKEN, CommonConstant.X_ACCESS_TOKEN, "header");
+// }
+// /**
+// * JWT token
+// * @return
+// */
+// private List setHeaderToken() {
+// ParameterBuilder tokenPar = new ParameterBuilder();
+// List pars = new ArrayList<>();
+// tokenPar.name(CommonConstant.X_ACCESS_TOKEN).description("token").modelRef(new ModelRef("string")).parameterType("header").required(false).build();
+// pars.add(tokenPar.build());
+// return pars;
+// }
+//
+// /**
+// * api文档的详细信息函数,注意这里的注解引用的是哪个
+// *
+// * @return
+// */
+// private ApiInfo apiInfo() {
+// return new ApiInfoBuilder()
+// // //大标题
+// .title("JeecgBoot 后台服务API接口文档")
+// // 版本号
+// .version("1.0")
+//// .termsOfServiceUrl("NO terms of service")
+// // 描述
+// .description("后台API接口")
+// // 作者
+// .contact(new Contact("北京国炬信息技术有限公司","www.jeccg.com","jeecgos@163.com"))
+// .license("The Apache License, Version 2.0")
+// .licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html")
+// .build();
+// }
+//
+// /**
+// * 新增 securityContexts 保持登录状态
+// */
+// private List securityContexts() {
+// return new ArrayList(
+// Collections.singleton(SecurityContext.builder()
+// .securityReferences(defaultAuth())
+// .forPaths(PathSelectors.regex("^(?!auth).*$"))
+// .build())
+// );
+// }
+//
+// private List defaultAuth() {
+// AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
+// AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
+// authorizationScopes[0] = authorizationScope;
+// return new ArrayList(
+// Collections.singleton(new SecurityReference(CommonConstant.X_ACCESS_TOKEN, authorizationScopes)));
+// }
+//
+// /**
+// * 解决springboot2.6 和springfox不兼容问题
+// * @return
+// */
+// @Bean
+// public static BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() {
+// return new BeanPostProcessor() {
+//
+// @Override
+// public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
+// if (bean instanceof WebMvcRequestHandlerProvider || bean instanceof WebFluxRequestHandlerProvider) {
+// customizeSpringfoxHandlerMappings(getHandlerMappings(bean));
+// }
+// return bean;
+// }
+//
+// private void customizeSpringfoxHandlerMappings(List mappings) {
+// List copy = mappings.stream()
+// .filter(mapping -> mapping.getPatternParser() == null)
+// .collect(Collectors.toList());
+// mappings.clear();
+// mappings.addAll(copy);
+// }
+//
+// @SuppressWarnings("unchecked")
+// private List getHandlerMappings(Object bean) {
+// try {
+// Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings");
+// field.setAccessible(true);
+// return (List) field.get(bean);
+// } catch (IllegalArgumentException | IllegalAccessException e) {
+// throw new IllegalStateException(e);
+// }
+// }
+// };
+// }
+//
+//
+//}
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/config/Swagger3Config.java b/jeecg-boot-base-core/src/main/java/org/jeecg/config/Swagger3Config.java
new file mode 100644
index 000000000..1ab523f41
--- /dev/null
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/config/Swagger3Config.java
@@ -0,0 +1,58 @@
+package org.jeecg.config;
+
+import io.swagger.v3.oas.models.Components;
+import io.swagger.v3.oas.models.OpenAPI;
+import io.swagger.v3.oas.models.Paths;
+import io.swagger.v3.oas.models.info.Contact;
+import io.swagger.v3.oas.models.info.Info;
+import io.swagger.v3.oas.models.info.License;
+import io.swagger.v3.oas.models.security.SecurityRequirement;
+import io.swagger.v3.oas.models.security.SecurityScheme;
+import org.jeecg.common.constant.CommonConstant;
+import org.springdoc.core.models.GroupedOpenApi;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+/**
+ * @author kezhijie@wuhandsj.com
+ * @date 2023/11/2 14:19
+ */
+@Configuration
+public class Swagger3Config implements WebMvcConfigurer {
+ /**
+ *
+ * 显示swagger-ui.html文档展示页,还必须注入swagger资源:
+ *
+ * @param registry
+ */
+ @Override
+ public void addResourceHandlers(ResourceHandlerRegistry registry) {
+ registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
+ registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
+ registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
+ }
+
+ @Bean
+ public GroupedOpenApi swaggerOpenApi() {
+ return GroupedOpenApi.builder()
+ .group("default")
+ .packagesToScan("org.jeecg")
+ .build();
+ }
+
+ @Bean
+ public OpenAPI customOpenAPI() {
+ return new OpenAPI()
+ .info(new Info()
+ .title("JeecgBoot 后台服务API接口文档")
+ .version("1.0")
+ .contact(new Contact().name("北京国炬信息技术有限公司").url("www.jeccg.com").email("jeecgos@163.com"))
+ .description( "后台API接口")
+ .termsOfService("NO terms of service")
+ .license(new License().name("Apache 2.0").url("http://www.apache.org/licenses/LICENSE-2.0.html"))
+ );
+ }
+
+}
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/config/WebMvcConfiguration.java b/jeecg-boot-base-core/src/main/java/org/jeecg/config/WebMvcConfiguration.java
index 3e55b7373..092ba87d1 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/config/WebMvcConfiguration.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/config/WebMvcConfiguration.java
@@ -10,12 +10,15 @@ import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
+import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.prometheus.PrometheusMeterRegistry;
+import jakarta.annotation.Resource;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.beans.factory.config.BeanPostProcessor;
-import org.springframework.boot.actuate.trace.http.InMemoryHttpTraceRepository;
+import org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryCustomizer;
+import org.springframework.boot.actuate.web.exchanges.InMemoryHttpExchangeRepository;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
@@ -30,7 +33,6 @@ import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
@@ -133,8 +135,11 @@ public class WebMvcConfiguration implements WebMvcConfigurer {
* https://blog.csdn.net/u013810234/article/details/110097201
*/
@Bean
- public InMemoryHttpTraceRepository getInMemoryHttpTrace(){
- return new InMemoryHttpTraceRepository();
+ public InMemoryHttpExchangeRepository getInMemoryHttpTrace(){
+ InMemoryHttpExchangeRepository repository = new InMemoryHttpExchangeRepository();
+ // 默认保存1000条http请求记录
+ repository.setCapacity(1000);
+ return repository;
}
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/config/filter/RequestBodyReserveFilter.java b/jeecg-boot-base-core/src/main/java/org/jeecg/config/filter/RequestBodyReserveFilter.java
index fd4f07a94..050c17439 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/config/filter/RequestBodyReserveFilter.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/config/filter/RequestBodyReserveFilter.java
@@ -3,8 +3,8 @@ package org.jeecg.config.filter;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.config.sign.util.BodyReaderHttpServletRequestWrapper;
-import javax.servlet.*;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.*;
+import jakarta.servlet.http.HttpServletRequest;
import java.io.IOException;
/**
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/config/filter/WebsocketFilter.java b/jeecg-boot-base-core/src/main/java/org/jeecg/config/filter/WebsocketFilter.java
index 55417e153..b9a788e4c 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/config/filter/WebsocketFilter.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/config/filter/WebsocketFilter.java
@@ -7,9 +7,9 @@ import org.jeecg.common.util.SpringContextUtils;
import org.jeecg.common.util.TokenUtils;
import org.jeecg.common.util.oConvertUtils;
-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;
/**
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/config/firewall/interceptor/LowCodeModeInterceptor.java b/jeecg-boot-base-core/src/main/java/org/jeecg/config/firewall/interceptor/LowCodeModeInterceptor.java
index 1e27df155..215351d29 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/config/firewall/interceptor/LowCodeModeInterceptor.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/config/firewall/interceptor/LowCodeModeInterceptor.java
@@ -17,9 +17,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.AntPathMatcher;
import org.springframework.web.servlet.HandlerInterceptor;
-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.io.IOException;
import java.io.PrintWriter;
import java.util.Set;
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/aspect/DynamicTableAspect.java b/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/aspect/DynamicTableAspect.java
index b0d67cbcb..df4dc302d 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/aspect/DynamicTableAspect.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/aspect/DynamicTableAspect.java
@@ -11,7 +11,7 @@ import org.jeecg.common.util.SpringContextUtils;
import org.jeecg.config.mybatis.ThreadLocalDataHelper;
import org.springframework.stereotype.Component;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import java.lang.reflect.Method;
/**
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/interceptor/DynamicDatasourceInterceptor.java b/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/interceptor/DynamicDatasourceInterceptor.java
index 3461cbd7e..9dfe33429 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/interceptor/DynamicDatasourceInterceptor.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/interceptor/DynamicDatasourceInterceptor.java
@@ -6,8 +6,8 @@ import org.apache.commons.lang3.StringUtils;
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;
/**
* 动态数据源切换拦截器
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java b/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java
index 4ca3ddf57..59d3c4cab 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java
@@ -28,8 +28,8 @@ import org.springframework.util.StringUtils;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
-import javax.annotation.Resource;
-import javax.servlet.Filter;
+import jakarta.annotation.Resource;
+import jakarta.servlet.Filter;
import java.util.*;
import java.util.stream.Collectors;
@@ -120,10 +120,10 @@ public class ShiroConfig {
filterChainDefinitionMap.put("/swagger-ui.html", "anon");
filterChainDefinitionMap.put("/swagger**/**", "anon");
filterChainDefinitionMap.put("/webjars/**", "anon");
- filterChainDefinitionMap.put("/v2/**", "anon");
+ filterChainDefinitionMap.put("/v3/**", "anon");
// 企业微信证书排除
filterChainDefinitionMap.put("/WW_verify*", "anon");
-
+
filterChainDefinitionMap.put("/sys/annountCement/show/**", "anon");
//积木报表排除
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroRealm.java b/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroRealm.java
index cde97b8d3..5b4bd1bc7 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroRealm.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroRealm.java
@@ -22,8 +22,8 @@ import org.jeecg.common.util.oConvertUtils;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletRequest;
import java.util.Set;
/**
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/filters/CustomShiroFilterFactoryBean.java b/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/filters/CustomShiroFilterFactoryBean.java
index 8668a44a9..db8523516 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/filters/CustomShiroFilterFactoryBean.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/filters/CustomShiroFilterFactoryBean.java
@@ -12,7 +12,7 @@ import org.apache.shiro.web.servlet.AbstractShiroFilter;
import org.apache.shiro.mgt.SecurityManager;
import org.springframework.beans.factory.BeanInitializationException;
-import javax.servlet.Filter;
+import jakarta.servlet.Filter;
import java.util.Map;
/**
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/filters/JwtFilter.java b/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/filters/JwtFilter.java
index 2e527c075..78a161a86 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/filters/JwtFilter.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/filters/JwtFilter.java
@@ -12,10 +12,10 @@ import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.RequestMethod;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
/**
* @Description: 鉴权登录拦截器
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/filters/ResourceCheckFilter.java b/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/filters/ResourceCheckFilter.java
index ee2adf214..f34248efb 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/filters/ResourceCheckFilter.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/filters/ResourceCheckFilter.java
@@ -1,9 +1,9 @@
package org.jeecg.config.shiro.filters;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.web.filter.AccessControlFilter;
import lombok.extern.slf4j.Slf4j;
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/interceptor/SignAuthConfiguration.java b/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/interceptor/SignAuthConfiguration.java
index 9c68ad54a..feaaa9a8f 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/interceptor/SignAuthConfiguration.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/interceptor/SignAuthConfiguration.java
@@ -10,7 +10,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;
/**
* 签名 拦截器配置
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/interceptor/SignAuthInterceptor.java b/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/interceptor/SignAuthInterceptor.java
index 4fd3e1679..94c118d1a 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/interceptor/SignAuthInterceptor.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/interceptor/SignAuthInterceptor.java
@@ -4,8 +4,8 @@ package org.jeecg.config.sign.interceptor;
import java.io.PrintWriter;
import java.util.SortedMap;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.constant.CommonConstant;
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/util/BodyReaderHttpServletRequestWrapper.java b/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/util/BodyReaderHttpServletRequestWrapper.java
index db42935f7..f7662627f 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/util/BodyReaderHttpServletRequestWrapper.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/util/BodyReaderHttpServletRequestWrapper.java
@@ -1,10 +1,10 @@
package org.jeecg.config.sign.util;
-import javax.servlet.ReadListener;
-import javax.servlet.ServletInputStream;
-import javax.servlet.ServletRequest;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletRequestWrapper;
+import jakarta.servlet.ReadListener;
+import jakarta.servlet.ServletInputStream;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequestWrapper;
import java.io.*;
import java.nio.charset.Charset;
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/util/HttpUtils.java b/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/util/HttpUtils.java
index c76d4c3e0..80128c09f 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/util/HttpUtils.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/util/HttpUtils.java
@@ -10,7 +10,7 @@ import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.constant.SymbolConstant;
diff --git a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/service/impl/BaseCommonServiceImpl.java b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/service/impl/BaseCommonServiceImpl.java
index 3bd057c51..cffd2f21c 100644
--- a/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/service/impl/BaseCommonServiceImpl.java
+++ b/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/service/impl/BaseCommonServiceImpl.java
@@ -12,8 +12,8 @@ import org.jeecg.common.util.SpringContextUtils;
import org.jeecg.common.util.oConvertUtils;
import org.springframework.stereotype.Service;
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.annotation.Resource;
+import jakarta.servlet.http.HttpServletRequest;
import java.util.*;
/**
diff --git a/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/cloud/controller/JcloudDemoProviderController.java b/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/cloud/controller/JcloudDemoProviderController.java
index 4688694c9..42a500281 100644
--- a/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/cloud/controller/JcloudDemoProviderController.java
+++ b/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/cloud/controller/JcloudDemoProviderController.java
@@ -8,7 +8,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
-import javax.annotation.Resource;
+import jakarta.annotation.Resource;
/**
* 服务端提供方——feign接口
diff --git a/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/mock/MockController.java b/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/mock/MockController.java
index 40513731b..b6b4ec467 100644
--- a/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/mock/MockController.java
+++ b/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/mock/MockController.java
@@ -6,8 +6,8 @@ import org.apache.commons.io.IOUtils;
import org.jeecg.common.api.vo.Result;
import org.springframework.web.bind.annotation.*;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import javax.swing.filechooser.FileSystemView;
import java.io.File;
import java.io.IOException;
diff --git a/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/mock/vxe/controller/VxeMockController.java b/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/mock/vxe/controller/VxeMockController.java
index e51b05781..a347aad82 100644
--- a/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/mock/vxe/controller/VxeMockController.java
+++ b/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/mock/vxe/controller/VxeMockController.java
@@ -18,7 +18,7 @@ import org.jeecg.modules.demo.mock.vxe.entity.MockEntity;
import org.jeecg.modules.demo.mock.vxe.websocket.VxeSocket;
import org.springframework.web.bind.annotation.*;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLDecoder;
diff --git a/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/mock/vxe/websocket/VxeSocket.java b/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/mock/vxe/websocket/VxeSocket.java
index 24d4eb315..017e8b66e 100644
--- a/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/mock/vxe/websocket/VxeSocket.java
+++ b/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/mock/vxe/websocket/VxeSocket.java
@@ -6,12 +6,12 @@ import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.constant.VxeSocketConst;
import org.springframework.stereotype.Component;
-import javax.websocket.OnClose;
-import javax.websocket.OnMessage;
-import javax.websocket.OnOpen;
-import javax.websocket.Session;
-import javax.websocket.server.PathParam;
-import javax.websocket.server.ServerEndpoint;
+import jakarta.websocket.OnClose;
+import jakarta.websocket.OnMessage;
+import jakarta.websocket.OnOpen;
+import jakarta.websocket.Session;
+import jakarta.websocket.server.PathParam;
+import jakarta.websocket.server.ServerEndpoint;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
diff --git a/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/JeecgDemoController.java b/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/JeecgDemoController.java
index 3a1e51bba..009710fa8 100644
--- a/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/JeecgDemoController.java
+++ b/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/JeecgDemoController.java
@@ -4,13 +4,12 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.mgt.DefaultSecurityManager;
@@ -30,8 +29,6 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import reactor.core.publisher.Mono;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
@@ -44,7 +41,7 @@ import java.util.List;
* @Version:V2.0
*/
@Slf4j
-@Api(tags = "单表DEMO")
+@Tag(name = "单表DEMO")
@RestController
@RequestMapping("/test/jeecgDemo")
public class JeecgDemoController extends JeecgController {
@@ -63,7 +60,7 @@ public class JeecgDemoController extends JeecgController list(JeecgDemo jeecgDemo, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
@@ -88,7 +85,7 @@ public class JeecgDemoController extends JeecgController add(@RequestBody JeecgDemo jeecgDemo) {
jeecgDemoService.save(jeecgDemo);
return Result.OK("添加成功!");
@@ -101,7 +98,7 @@ public class JeecgDemoController extends JeecgController edit(@RequestBody JeecgDemo jeecgDemo) {
jeecgDemoService.updateById(jeecgDemo);
@@ -116,7 +113,7 @@ public class JeecgDemoController extends JeecgController delete(@RequestParam(name = "id", required = true) String id) {
jeecgDemoService.removeById(id);
return Result.OK("删除成功!");
@@ -129,7 +126,7 @@ public class JeecgDemoController extends JeecgController deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
this.jeecgDemoService.removeByIds(Arrays.asList(ids.split(",")));
return Result.OK("批量删除成功!");
@@ -142,8 +139,8 @@ public class JeecgDemoController extends JeecgController queryById(@ApiParam(name = "id", value = "示例id", required = true) @RequestParam(name = "id", required = true) String id) {
+ @Operation(summary = "通过ID查询DEMO")
+ public Result> queryById(/*@ApiParam(name = "id", value = "示例id", required = true)*/ @RequestParam(name = "id", required = true) String id) {
JeecgDemo jeecgDemo = jeecgDemoService.getById(id);
return Result.OK(jeecgDemo);
}
@@ -475,7 +472,7 @@ public class JeecgDemoController extends JeecgController test() {
//解决shiro报错No SecurityManager accessible to the calling code, either bound to the org.apache.shiro
diff --git a/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/JeecgDynamicDataController.java b/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/JeecgDynamicDataController.java
index 4036fb3e3..e1adfe897 100644
--- a/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/JeecgDynamicDataController.java
+++ b/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/JeecgDynamicDataController.java
@@ -1,8 +1,7 @@
package org.jeecg.modules.demo.test.controller;
-import io.lettuce.core.dynamic.annotation.Param;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.AutoLog;
@@ -11,7 +10,10 @@ import org.jeecg.modules.demo.test.entity.JeecgDemo;
import org.jeecg.modules.demo.test.service.IJeecgDemoService;
import org.jeecg.modules.demo.test.service.IJeecgDynamicDataService;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@@ -21,7 +23,7 @@ import java.util.List;
* @Date:2020-04-21
*/
@Slf4j
-@Api(tags = "动态数据源测试")
+@Tag(name = "动态数据源测试")
@RestController
@RequestMapping("/test/dynamic")
public class JeecgDynamicDataController extends JeecgController {
@@ -37,7 +39,7 @@ public class JeecgDynamicDataController extends JeecgController> selectSpelByKey(@RequestParam(required = false) String dsName) {
List list = jeecgDynamicDataService.selectSpelByKey(dsName);
return Result.OK(list);
diff --git a/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/JeecgOrderErpMainController.java b/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/JeecgOrderErpMainController.java
index 9b02a9a30..f21e131a6 100644
--- a/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/JeecgOrderErpMainController.java
+++ b/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/JeecgOrderErpMainController.java
@@ -17,7 +17,7 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import java.util.Arrays;
/**
diff --git a/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/JeecgOrderMainController.java b/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/JeecgOrderMainController.java
index bfb9ea535..601d9aae6 100644
--- a/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/JeecgOrderMainController.java
+++ b/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/JeecgOrderMainController.java
@@ -5,8 +5,8 @@ import java.util.Arrays;
import java.util.List;
import java.util.Map;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.api.vo.Result;
diff --git a/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/JoaDemoController.java b/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/JoaDemoController.java
index c375ebc91..ecc2c17d3 100644
--- a/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/JoaDemoController.java
+++ b/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/JoaDemoController.java
@@ -7,8 +7,8 @@ import java.util.Arrays;
import java.util.List;
import java.util.Map;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator;
diff --git a/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/entity/JeecgDemo.java b/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/entity/JeecgDemo.java
index 58b177f06..15a4de279 100644
--- a/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/entity/JeecgDemo.java
+++ b/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/test/entity/JeecgDemo.java
@@ -3,6 +3,7 @@ package org.jeecg.modules.demo.test.entity;
import java.io.Serializable;
import com.baomidou.mybatisplus.annotation.Version;
+import io.swagger.v3.oas.annotations.media.Schema;
import org.jeecg.common.system.base.entity.JeecgEntity;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
@@ -10,8 +11,6 @@ import org.springframework.format.annotation.DateTimeFormat;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
@@ -25,59 +24,59 @@ import lombok.experimental.Accessors;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
-@ApiModel(value="测试DEMO对象", description="测试DEMO")
+@Schema(description="测试DEMO")
@TableName("demo")
public class JeecgDemo extends JeecgEntity implements Serializable {
private static final long serialVersionUID = 1L;
/** 姓名 */
@Excel(name="姓名",width=25)
- @ApiModelProperty(value = "姓名")
+ @Schema(description = "姓名")
private java.lang.String name;
/** 关键词 */
- @ApiModelProperty(value = "关键词")
+ @Schema(description = "关键词")
@Excel(name="关键词",width=15)
private java.lang.String keyWord;
/** 打卡时间 */
- @ApiModelProperty(value = "打卡时间")
+ @Schema(description = "打卡时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name="打卡时间",width=20,format="yyyy-MM-dd HH:mm:ss")
private java.util.Date punchTime;
/** 工资 */
- @ApiModelProperty(value = "工资",example = "0")
+ @Schema(description = "工资",example = "0")
@Excel(name="工资",width=15)
private java.math.BigDecimal salaryMoney;
/** 奖金 */
- @ApiModelProperty(value = "奖金",example = "0")
+ @Schema(description = "奖金",example = "0")
@Excel(name="奖金",width=15)
private java.lang.Double bonusMoney;
/** 性别 {男:1,女:2} */
- @ApiModelProperty(value = "性别")
+ @Schema(description = "性别")
@Excel(name = "性别", width = 15, dicCode = "sex")
private java.lang.String sex;
/** 年龄 */
- @ApiModelProperty(value = "年龄",example = "0")
+ @Schema(description = "年龄",example = "0")
@Excel(name="年龄",width=15)
private java.lang.Integer age;
/** 生日 */
- @ApiModelProperty(value = "生日")
+ @Schema(description = "生日")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Excel(name="生日",format="yyyy-MM-dd")
private java.util.Date birthday;
/** 邮箱 */
- @ApiModelProperty(value = "邮箱")
+ @Schema(description = "邮箱")
@Excel(name="邮箱",width=30)
private java.lang.String email;
/** 个人简介 */
- @ApiModelProperty(value = "个人简介")
+ @Schema(description = "个人简介")
private java.lang.String content;
/** 部门编码 */
@Excel(name="部门编码",width=25)
- @ApiModelProperty(value = "部门编码")
+ @Schema(description = "部门编码")
private java.lang.String sysOrgCode;
- @ApiModelProperty(value = "租户ID")
+// @Schema(description = "租户ID")
private java.lang.Integer tenantId;
/** 乐观锁字段 */
@Version
diff --git a/jeecg-module-demo/src/main/java/org/jeecg/modules/dlglong/controller/DlMockController.java b/jeecg-module-demo/src/main/java/org/jeecg/modules/dlglong/controller/DlMockController.java
index e3f99a383..409c71fa3 100644
--- a/jeecg-module-demo/src/main/java/org/jeecg/modules/dlglong/controller/DlMockController.java
+++ b/jeecg-module-demo/src/main/java/org/jeecg/modules/dlglong/controller/DlMockController.java
@@ -18,7 +18,7 @@ import org.jeecg.modules.demo.mock.vxe.websocket.VxeSocket;
import org.jeecg.modules.dlglong.entity.MockEntity;
import org.springframework.web.bind.annotation.*;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLDecoder;
diff --git a/jeecg-module-system/jeecg-system-biz/pom.xml b/jeecg-module-system/jeecg-system-biz/pom.xml
index 31c789931..cf5c0fc8f 100644
--- a/jeecg-module-system/jeecg-system-biz/pom.xml
+++ b/jeecg-module-system/jeecg-system-biz/pom.xml
@@ -19,10 +19,10 @@
org.hibernate
hibernate-core
-
+
@@ -30,15 +30,15 @@
jeewx-api
-
+
+
@GetMapping(value = "/list${sub.entityName}ByMainId")
public Result> list${sub.entityName}ByMainId(${sub.entityName} ${sub.entityName?uncap_first},
@@ -208,7 +208,7 @@ ${sub.entityName?uncap_first}.get${key}()!=null<#rt/>
* @return
*/
@AutoLog(value = "${sub.ftlDescription}-添加")
- @ApiOperation(value="${sub.ftlDescription}-添加", notes="${sub.ftlDescription}-添加")
+ @Operation(summary="${sub.ftlDescription}-添加")
@PostMapping(value = "/add${sub.entityName}")
public Result> add${sub.entityName}(@RequestBody ${sub.entityName} ${sub.entityName?uncap_first}) {
${sub.entityName?uncap_first}Service.save(${sub.entityName?uncap_first});
@@ -222,7 +222,7 @@ ${sub.entityName?uncap_first}.get${key}()!=null<#rt/>
* @return
*/
@AutoLog(value = "${sub.ftlDescription}-编辑")
- @ApiOperation(value="${sub.ftlDescription}-编辑", notes="${sub.ftlDescription}-编辑")
+ @Operation(summary="${sub.ftlDescription}-编辑")
@RequestMapping(value = "/edit${sub.entityName}", method = {RequestMethod.PUT,RequestMethod.POST})
public Result> edit${sub.entityName}(@RequestBody ${sub.entityName} ${sub.entityName?uncap_first}) {
${sub.entityName?uncap_first}Service.updateById(${sub.entityName?uncap_first});
@@ -236,7 +236,7 @@ ${sub.entityName?uncap_first}.get${key}()!=null<#rt/>
* @return
*/
@AutoLog(value = "${sub.ftlDescription}-通过id删除")
- @ApiOperation(value="${sub.ftlDescription}-通过id删除", notes="${sub.ftlDescription}-通过id删除")
+ @Operation(summary="${sub.ftlDescription}-通过id删除")
@DeleteMapping(value = "/delete${sub.entityName}")
public Result> delete${sub.entityName}(@RequestParam(name = "id", required = true) String id) {
${sub.entityName?uncap_first}Service.removeById(id);
@@ -250,7 +250,7 @@ ${sub.entityName?uncap_first}.get${key}()!=null<#rt/>
* @return
*/
@AutoLog(value = "${sub.ftlDescription}-批量删除")
- @ApiOperation(value="${sub.ftlDescription}-批量删除", notes="${sub.ftlDescription}-批量删除")
+ @Operation(summary="${sub.ftlDescription}-批量删除")
@DeleteMapping(value = "/deleteBatch${sub.entityName}")
public Result> deleteBatch${sub.entityName}(@RequestParam(name = "ids", required = true) String ids) {
if (ids == null || "".equals(ids.trim())) {
diff --git a/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/entity/${entityName}.javai b/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/entity/${entityName}.javai
index 3adee3a36..467708592 100644
--- a/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/entity/${entityName}.javai
+++ b/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/entity/${entityName}.javai
@@ -8,8 +8,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
/**
* @Description: ${tableVo.ftlDescription}
@@ -19,7 +18,7 @@ import io.swagger.annotations.ApiModelProperty;
*/
@Data
@TableName("${tableName}")
-@ApiModel(value="${tableName}对象", description="${tableVo.ftlDescription}")
+@Schema(description="${tableVo.ftlDescription}")
public class ${entityName} implements Serializable {
private static final long serialVersionUID = 1L;
@@ -37,7 +36,7 @@ public class ${entityName} implements Serializable {
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
#if>
#if>
- @ApiModelProperty(value = "${po.filedComment}")
+ @Schema(description = "${po.filedComment}")
private <#if po.fieldType=='java.sql.Blob'>byte[]<#else>${po.fieldType}#if> ${po.fieldName};
#list>
}
diff --git a/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/entity/[1-n]Entity.javai b/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/entity/[1-n]Entity.javai
index 54f3e9af4..64c0c6b97 100644
--- a/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/entity/[1-n]Entity.javai
+++ b/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/entity/[1-n]Entity.javai
@@ -10,8 +10,7 @@ import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
/**
* @Description: ${subTab.ftlDescription}
@@ -21,7 +20,7 @@ import io.swagger.annotations.ApiModelProperty;
*/
@Data
@TableName("${subTab.tableName}")
-@ApiModel(value="${tableName}对象", description="${tableVo.ftlDescription}")
+@Schema(description="${tableVo.ftlDescription}")
public class ${subTab.entityName} implements Serializable {
private static final long serialVersionUID = 1L;
@@ -46,7 +45,7 @@ public class ${subTab.entityName} implements Serializable {
#if>
#if>
#if>
- @ApiModelProperty(value = "${po.filedComment}")
+ @Schema(description = "${po.filedComment}")
private <#if po.fieldType=='java.sql.Blob'>byte[]<#else>${po.fieldType}#if> ${po.fieldName};
#list>
}
diff --git a/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/vo/${entityName}Page.javai b/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/vo/${entityName}Page.javai
index 496d9d3aa..200c28484 100644
--- a/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/vo/${entityName}Page.javai
+++ b/jeecg-module-system/jeecg-system-biz/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/vo/${entityName}Page.javai
@@ -10,9 +10,7 @@ import org.jeecgframework.poi.excel.annotation.Excel;
import org.jeecgframework.poi.excel.annotation.ExcelCollection;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-
+import io.swagger.v3.oas.annotations.media.Schema;
/**
* @Description: ${tableVo.ftlDescription}
* @Author: jeecg-boot
@@ -20,7 +18,7 @@ import io.swagger.annotations.ApiModelProperty;
* @Version: V1.0
*/
@Data
-@ApiModel(value="${tableName}Page对象", description="${tableVo.ftlDescription}")
+@Schema(description="${tableVo.ftlDescription}")
public class ${entityName}Page {
<#list originalColumns as po>
@@ -46,7 +44,7 @@ public class ${entityName}Page {
<#list subTables as sub>
@ExcelCollection(name="${sub.ftlDescription}")
- @ApiModelProperty(value = "${sub.ftlDescription}")
+ @Schema(description = "${sub.ftlDescription}")
private List<${sub.entityName}> ${sub.entityName?uncap_first}List;
#list>
diff --git a/jeecg-module-system/jeecg-system-start/pom.xml b/jeecg-module-system/jeecg-system-start/pom.xml
index 765c63f6e..d298173b6 100644
--- a/jeecg-module-system/jeecg-system-start/pom.xml
+++ b/jeecg-module-system/jeecg-system-start/pom.xml
@@ -24,6 +24,17 @@
jeecg-module-demo
${jeecgboot.version}
+
+
+ org.springframework.boot
+ spring-boot-properties-migrator
+ runtime
+
+
+
+ jakarta.servlet
+ jakarta.servlet-api
+
diff --git a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/JeecgSystemApplication.java b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/JeecgSystemApplication.java
index 633249de9..c4d67c806 100644
--- a/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/JeecgSystemApplication.java
+++ b/jeecg-module-system/jeecg-system-start/src/main/java/org/jeecg/JeecgSystemApplication.java
@@ -1,12 +1,15 @@
package org.jeecg;
+import com.xkcoding.justauth.autoconfigure.JustAuthAutoConfiguration;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.util.oConvertUtils;
import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.context.annotation.Import;
import org.springframework.core.env.Environment;
import java.net.InetAddress;
@@ -18,6 +21,7 @@ import java.net.UnknownHostException;
*/
@Slf4j
@SpringBootApplication
+@ImportAutoConfiguration(JustAuthAutoConfiguration.class) // spring boot 3.x justauth 兼容性处理
//@EnableAutoConfiguration(exclude={MongoAutoConfiguration.class})
public class JeecgSystemApplication extends SpringBootServletInitializer {
diff --git a/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml b/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml
index 0258ce934..d8232cb28 100644
--- a/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml
+++ b/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml
@@ -95,7 +95,7 @@ spring:
resource:
static-locations: classpath:/static/,classpath:/public/
autoconfigure:
- exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
+ exclude: com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceAutoConfigure
datasource:
druid:
stat-view-servlet:
@@ -133,9 +133,9 @@ spring:
slow-sql-millis: 5000
datasource:
master:
- url: jdbc:mysql://127.0.0.1:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
+ url: jdbc:mysql://172.16.10.227:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
username: root
- password: root
+ password: root@2023
driver-class-name: com.mysql.cj.jdbc.Driver
# 多数据源配置
#multi-datasource1:
@@ -144,11 +144,12 @@ spring:
#password: root
#driver-class-name: com.mysql.cj.jdbc.Driver
#redis 配置
- redis:
- database: 0
- host: 127.0.0.1
- port: 6379
- password: ''
+ data:
+ redis:
+ database: 0
+ host: 172.16.10.227
+ port: 6379
+ password: Whdsj@redis0523
#mybatis plus 设置
mybatis-plus:
mapper-locations: classpath*:org/jeecg/modules/**/xml/*Mapper.xml
@@ -234,8 +235,8 @@ jeecg:
logRetentionDays: 30
#分布式锁配置
redisson:
- address: 127.0.0.1:6379
- password:
+ address: 172.16.10.227:6379
+ password: Whdsj@redis0523
type: STANDALONE
enabled: true
#cas单点登录
diff --git a/jeecg-module-system/jeecg-system-start/src/test/java/org/jeecg/modules/system/test/SampleTest.java b/jeecg-module-system/jeecg-system-start/src/test/java/org/jeecg/modules/system/test/SampleTest.java
index 32f5aafcd..ca1a0d9d7 100644
--- a/jeecg-module-system/jeecg-system-start/src/test/java/org/jeecg/modules/system/test/SampleTest.java
+++ b/jeecg-module-system/jeecg-system-start/src/test/java/org/jeecg/modules/system/test/SampleTest.java
@@ -12,7 +12,7 @@ import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
-import javax.annotation.Resource;
+import jakarta.annotation.Resource;
import java.util.List;
@RunWith(SpringRunner.class)
diff --git a/jeecg-server-cloud/jeecg-cloud-gateway/pom.xml b/jeecg-server-cloud/jeecg-cloud-gateway/pom.xml
index 94e14d246..19cea7c0b 100644
--- a/jeecg-server-cloud/jeecg-cloud-gateway/pom.xml
+++ b/jeecg-server-cloud/jeecg-cloud-gateway/pom.xml
@@ -28,8 +28,8 @@
spring-cloud-starter-gateway
- javax.servlet
- javax.servlet-api
+ jakarta.servlet
+ jakarta.servlet-api
@@ -58,10 +58,10 @@
sentinel-datasource-nacos
-
+
@@ -73,7 +73,7 @@
com.github.xiaoymin
- knife4j-spring-boot-starter
+ knife4j-gateway-spring-boot-starter
${knife4j-spring-boot-starter.version}
diff --git a/jeecg-server-cloud/jeecg-cloud-gateway/src/main/java/org/jeecg/JeecgGatewayApplication.java b/jeecg-server-cloud/jeecg-cloud-gateway/src/main/java/org/jeecg/JeecgGatewayApplication.java
index 3da36d24c..122a4d98c 100644
--- a/jeecg-server-cloud/jeecg-cloud-gateway/src/main/java/org/jeecg/JeecgGatewayApplication.java
+++ b/jeecg-server-cloud/jeecg-cloud-gateway/src/main/java/org/jeecg/JeecgGatewayApplication.java
@@ -13,7 +13,7 @@ import org.springframework.http.MediaType;
import org.springframework.web.reactive.function.server.RouterFunction;
import org.springframework.web.reactive.function.server.ServerResponse;
-import javax.annotation.Resource;
+import jakarta.annotation.Resource;
import static org.springframework.web.reactive.function.server.RequestPredicates.GET;
import static org.springframework.web.reactive.function.server.RouterFunctions.route;
@@ -50,8 +50,8 @@ public class JeecgGatewayApplication implements CommandLineRunner {
* @param indexHtml
* @return
*/
- @Bean
- public RouterFunction indexRouter(@Value("classpath:/META-INF/resources/doc.html") final org.springframework.core.io.Resource indexHtml) {
- return route(GET("/"), request -> ok().contentType(MediaType.TEXT_HTML).syncBody(indexHtml));
- }
+// @Bean
+// public RouterFunction indexRouter(@Value("classpath:/META-INF/resources/doc.html") final org.springframework.core.io.Resource indexHtml) {
+// return route(GET("/"), request -> ok().contentType(MediaType.TEXT_HTML).syncBody(indexHtml));
+// }
}
diff --git a/jeecg-server-cloud/jeecg-cloud-gateway/src/main/java/org/jeecg/fallback/sentinel/GatewaySentinelExceptionConfig.java b/jeecg-server-cloud/jeecg-cloud-gateway/src/main/java/org/jeecg/fallback/sentinel/GatewaySentinelExceptionConfig.java
index a4e8e132e..3e39582df 100644
--- a/jeecg-server-cloud/jeecg-cloud-gateway/src/main/java/org/jeecg/fallback/sentinel/GatewaySentinelExceptionConfig.java
+++ b/jeecg-server-cloud/jeecg-cloud-gateway/src/main/java/org/jeecg/fallback/sentinel/GatewaySentinelExceptionConfig.java
@@ -10,7 +10,7 @@ import org.springframework.http.MediaType;
import org.springframework.web.reactive.function.BodyInserters;
import org.springframework.web.reactive.function.server.ServerResponse;
-import javax.annotation.PostConstruct;
+import jakarta.annotation.PostConstruct;
import java.util.HashMap;
/**
diff --git a/jeecg-server-cloud/jeecg-cloud-gateway/src/main/java/org/jeecg/filter/SentinelFilterContextConfig.java b/jeecg-server-cloud/jeecg-cloud-gateway/src/main/java/org/jeecg/filter/SentinelFilterContextConfig.java
index 8d0ad94bd..9cd95c264 100644
--- a/jeecg-server-cloud/jeecg-cloud-gateway/src/main/java/org/jeecg/filter/SentinelFilterContextConfig.java
+++ b/jeecg-server-cloud/jeecg-cloud-gateway/src/main/java/org/jeecg/filter/SentinelFilterContextConfig.java
@@ -1,25 +1,25 @@
-package org.jeecg.filter;
-
-import com.alibaba.csp.sentinel.adapter.servlet.CommonFilter;
-import org.springframework.boot.web.servlet.FilterRegistrationBean;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * @author: zyf
- * @date: 20210715
- */
-@Configuration
-public class SentinelFilterContextConfig {
- @Bean
- public FilterRegistrationBean sentinelFilterRegistration() {
- FilterRegistrationBean registration = new FilterRegistrationBean();
- registration.setFilter(new CommonFilter());
- registration.addUrlPatterns("/*");
- // 入口资源关闭聚合
- registration.addInitParameter(CommonFilter.WEB_CONTEXT_UNIFY, "false");
- registration.setName("sentinelFilter");
- registration.setOrder(1);
- return registration;
- }
-}
\ No newline at end of file
+//package org.jeecg.filter;
+//
+//import com.alibaba.csp.sentinel.adapter.servlet.CommonFilter;
+//import org.springframework.boot.web.servlet.FilterRegistrationBean;
+//import org.springframework.context.annotation.Bean;
+//import org.springframework.context.annotation.Configuration;
+//
+///**
+// * @author: zyf
+// * @date: 20210715
+// */
+//@Configuration
+//public class SentinelFilterContextConfig {
+// @Bean
+// public FilterRegistrationBean sentinelFilterRegistration() {
+// FilterRegistrationBean registration = new FilterRegistrationBean();
+// registration.setFilter(new CommonFilter());
+// registration.addUrlPatterns("/*");
+// // 入口资源关闭聚合
+// registration.addInitParameter(CommonFilter.WEB_CONTEXT_UNIFY, "false");
+// registration.setName("sentinelFilter");
+// registration.setOrder(1);
+// return registration;
+// }
+//}
\ No newline at end of file
diff --git a/jeecg-server-cloud/jeecg-cloud-gateway/src/main/java/org/jeecg/handler/LoderRouderHandler.java b/jeecg-server-cloud/jeecg-cloud-gateway/src/main/java/org/jeecg/handler/LoderRouderHandler.java
index dabe02789..a22086313 100644
--- a/jeecg-server-cloud/jeecg-cloud-gateway/src/main/java/org/jeecg/handler/LoderRouderHandler.java
+++ b/jeecg-server-cloud/jeecg-cloud-gateway/src/main/java/org/jeecg/handler/LoderRouderHandler.java
@@ -7,7 +7,7 @@ import org.jeecg.common.modules.redis.listener.JeecgRedisListener;
import org.jeecg.loader.DynamicRouteLoader;
import org.springframework.stereotype.Component;
-import javax.annotation.Resource;
+import jakarta.annotation.Resource;
/**
* 路由刷新监听(实现方式:redis监听handler)
diff --git a/jeecg-server-cloud/jeecg-cloud-gateway/src/main/java/org/jeecg/handler/swagger/MySwaggerResourceProvider.java b/jeecg-server-cloud/jeecg-cloud-gateway/src/main/java/org/jeecg/handler/swagger/MySwaggerResourceProvider.java
index babaf1e9e..37937f40f 100644
--- a/jeecg-server-cloud/jeecg-cloud-gateway/src/main/java/org/jeecg/handler/swagger/MySwaggerResourceProvider.java
+++ b/jeecg-server-cloud/jeecg-cloud-gateway/src/main/java/org/jeecg/handler/swagger/MySwaggerResourceProvider.java
@@ -1,160 +1,160 @@
-package org.jeecg.handler.swagger;
-
-import cn.hutool.core.util.ArrayUtil;
-import cn.hutool.core.util.ObjectUtil;
-import com.alibaba.nacos.api.naming.NamingFactory;
-import com.alibaba.nacos.api.naming.NamingService;
-import com.alibaba.nacos.api.naming.pojo.Instance;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.cloud.gateway.route.RouteLocator;
-import org.springframework.context.annotation.Primary;
-import org.springframework.stereotype.Component;
-
-import springfox.documentation.swagger.web.SwaggerResource;
-import springfox.documentation.swagger.web.SwaggerResourcesProvider;
-
-import java.util.*;
-
-/**
- * 聚合各个服务的swagger接口
- * @author zyf
- * @date: 2022/4/21 10:55
- */
-@Component
-@Slf4j
-@Primary
-public class MySwaggerResourceProvider implements SwaggerResourcesProvider {
- /**
- * swagger2默认的url后缀
- */
- private static final String SWAGGER2URL = "/v2/api-docs";
-
- /**
- * 网关路由
- */
- private final RouteLocator routeLocator;
- /**
- * Nacos名字服务
- */
- private NamingService naming;
-
- /**
- * nacos服务地址
- */
- @Value("${spring.cloud.nacos.discovery.server-addr}")
- private String serverAddr;
- /**
- * nacos namespace
- */
- @Value("${spring.cloud.nacos.discovery.namespace:#{null}}")
- private String namespace;
-
- /**
- * nacos groupName
- */
- @Value("${spring.cloud.nacos.config.group:DEFAULT_GROUP:#{null}}")
- private String group;
-
- /**
- * nacos username
- */
- @Value("${spring.cloud.nacos.discovery.username:#{null}}")
- private String username;
- /**
- * nacos password
- */
- @Value("${spring.cloud.nacos.discovery.password:#{null}}")
- private String password;
-
- /**
- * Swagger中需要排除的服务
- */
- private String[] excludeServiceIds=new String[]{"jeecg-cloud-monitor"};
-
-
- /**
- * 网关应用名称
- */
- @Value("${spring.application.name}")
- private String self;
-
- @Autowired
- public MySwaggerResourceProvider(RouteLocator routeLocator) {
- this.routeLocator = routeLocator;
- }
-
- @Override
- public List get() {
- List resources = new ArrayList<>();
- List routeHosts = new ArrayList<>();
- // 获取所有可用的host:serviceId
- routeLocator.getRoutes().filter(route -> route.getUri().getHost() != null)
- .filter(route -> !self.equals(route.getUri().getHost()))
- .subscribe(route ->{
- //update-begin---author:zyf ---date:20220413 for:过滤掉无效路由,避免接口文档报错无法打开
- boolean hasRoute=checkRoute(route.getId());
- if(hasRoute){
- routeHosts.add(route.getUri().getHost());
- }
- //update-end---author:zyf ---date:20220413 for:过滤掉无效路由,避免接口文档报错无法打开
- });
-
- // 记录已经添加过的server,存在同一个应用注册了多个服务在nacos上
- Set dealed = new HashSet<>();
- routeHosts.forEach(instance -> {
- // 拼接url
- String url = "/" + instance.toLowerCase() + SWAGGER2URL;
- if (!dealed.contains(url)) {
- dealed.add(url);
- log.info(" Gateway add SwaggerResource: {}",url);
- SwaggerResource swaggerResource = new SwaggerResource();
- swaggerResource.setUrl(url);
- swaggerResource.setSwaggerVersion("2.0");
- swaggerResource.setName(instance);
- //Swagger排除不展示的服务
- if(!ArrayUtil.contains(excludeServiceIds,instance)){
- resources.add(swaggerResource);
- }
- }
- });
- return resources;
- }
-
- /**
- * 检测nacos中是否有健康实例
- * @param routeId
- * @return
- */
- private Boolean checkRoute(String routeId) {
- Boolean hasRoute = false;
- try {
- //修复使用带命名空间启动网关swagger看不到接口文档的问题
- Properties properties=new Properties();
- properties.setProperty("serverAddr",serverAddr);
- if(namespace!=null && !"".equals(namespace)){
- log.info("nacos.discovery.namespace = {}", namespace);
- properties.setProperty("namespace",namespace);
- }
- if(username!=null && !"".equals(username)){
- properties.setProperty("username",username);
- }
- if(password!=null && !"".equals(password)){
- properties.setProperty("password",password);
- }
- //【issues/5115】因swagger文档导致gateway内存溢出
- if (this.naming == null) {
- this.naming = NamingFactory.createNamingService(properties);
- }
- log.info(" config.group : {}", group);
- List list = this.naming.selectInstances(routeId, group , true);
- if (ObjectUtil.isNotEmpty(list)) {
- hasRoute = true;
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- return hasRoute;
- }
-}
\ No newline at end of file
+//package org.jeecg.handler.swagger;
+//
+//import cn.hutool.core.util.ArrayUtil;
+//import cn.hutool.core.util.ObjectUtil;
+//import com.alibaba.nacos.api.naming.NamingFactory;
+//import com.alibaba.nacos.api.naming.NamingService;
+//import com.alibaba.nacos.api.naming.pojo.Instance;
+//import lombok.extern.slf4j.Slf4j;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.beans.factory.annotation.Value;
+//import org.springframework.cloud.gateway.route.RouteLocator;
+//import org.springframework.context.annotation.Primary;
+//import org.springframework.stereotype.Component;
+//
+//import springfox.documentation.swagger.web.SwaggerResource;
+//import springfox.documentation.swagger.web.SwaggerResourcesProvider;
+//
+//import java.util.*;
+//
+///**
+// * 聚合各个服务的swagger接口
+// * @author zyf
+// * @date: 2022/4/21 10:55
+// */
+//@Component
+//@Slf4j
+//@Primary
+//public class MySwaggerResourceProvider implements SwaggerResourcesProvider {
+// /**
+// * swagger2默认的url后缀
+// */
+// private static final String SWAGGER2URL = "/v2/api-docs";
+//
+// /**
+// * 网关路由
+// */
+// private final RouteLocator routeLocator;
+// /**
+// * Nacos名字服务
+// */
+// private NamingService naming;
+//
+// /**
+// * nacos服务地址
+// */
+// @Value("${spring.cloud.nacos.discovery.server-addr}")
+// private String serverAddr;
+// /**
+// * nacos namespace
+// */
+// @Value("${spring.cloud.nacos.discovery.namespace:#{null}}")
+// private String namespace;
+//
+// /**
+// * nacos groupName
+// */
+// @Value("${spring.cloud.nacos.config.group:DEFAULT_GROUP:#{null}}")
+// private String group;
+//
+// /**
+// * nacos username
+// */
+// @Value("${spring.cloud.nacos.discovery.username:#{null}}")
+// private String username;
+// /**
+// * nacos password
+// */
+// @Value("${spring.cloud.nacos.discovery.password:#{null}}")
+// private String password;
+//
+// /**
+// * Swagger中需要排除的服务
+// */
+// private String[] excludeServiceIds=new String[]{"jeecg-cloud-monitor"};
+//
+//
+// /**
+// * 网关应用名称
+// */
+// @Value("${spring.application.name}")
+// private String self;
+//
+// @Autowired
+// public MySwaggerResourceProvider(RouteLocator routeLocator) {
+// this.routeLocator = routeLocator;
+// }
+//
+// @Override
+// public List get() {
+// List resources = new ArrayList<>();
+// List routeHosts = new ArrayList<>();
+// // 获取所有可用的host:serviceId
+// routeLocator.getRoutes().filter(route -> route.getUri().getHost() != null)
+// .filter(route -> !self.equals(route.getUri().getHost()))
+// .subscribe(route ->{
+// //update-begin---author:zyf ---date:20220413 for:过滤掉无效路由,避免接口文档报错无法打开
+// boolean hasRoute=checkRoute(route.getId());
+// if(hasRoute){
+// routeHosts.add(route.getUri().getHost());
+// }
+// //update-end---author:zyf ---date:20220413 for:过滤掉无效路由,避免接口文档报错无法打开
+// });
+//
+// // 记录已经添加过的server,存在同一个应用注册了多个服务在nacos上
+// Set dealed = new HashSet<>();
+// routeHosts.forEach(instance -> {
+// // 拼接url
+// String url = "/" + instance.toLowerCase() + SWAGGER2URL;
+// if (!dealed.contains(url)) {
+// dealed.add(url);
+// log.info(" Gateway add SwaggerResource: {}",url);
+// SwaggerResource swaggerResource = new SwaggerResource();
+// swaggerResource.setUrl(url);
+// swaggerResource.setSwaggerVersion("2.0");
+// swaggerResource.setName(instance);
+// //Swagger排除不展示的服务
+// if(!ArrayUtil.contains(excludeServiceIds,instance)){
+// resources.add(swaggerResource);
+// }
+// }
+// });
+// return resources;
+// }
+//
+// /**
+// * 检测nacos中是否有健康实例
+// * @param routeId
+// * @return
+// */
+// private Boolean checkRoute(String routeId) {
+// Boolean hasRoute = false;
+// try {
+// //修复使用带命名空间启动网关swagger看不到接口文档的问题
+// Properties properties=new Properties();
+// properties.setProperty("serverAddr",serverAddr);
+// if(namespace!=null && !"".equals(namespace)){
+// log.info("nacos.discovery.namespace = {}", namespace);
+// properties.setProperty("namespace",namespace);
+// }
+// if(username!=null && !"".equals(username)){
+// properties.setProperty("username",username);
+// }
+// if(password!=null && !"".equals(password)){
+// properties.setProperty("password",password);
+// }
+// //【issues/5115】因swagger文档导致gateway内存溢出
+// if (this.naming == null) {
+// this.naming = NamingFactory.createNamingService(properties);
+// }
+// log.info(" config.group : {}", group);
+// List list = this.naming.selectInstances(routeId, group , true);
+// if (ObjectUtil.isNotEmpty(list)) {
+// hasRoute = true;
+// }
+// } catch (Exception e) {
+// e.printStackTrace();
+// }
+// return hasRoute;
+// }
+//}
\ No newline at end of file
diff --git a/jeecg-server-cloud/jeecg-cloud-gateway/src/main/java/org/jeecg/handler/swagger/SwaggerResourceController.java b/jeecg-server-cloud/jeecg-cloud-gateway/src/main/java/org/jeecg/handler/swagger/SwaggerResourceController.java
index 41424fbe0..b899cb1ec 100644
--- a/jeecg-server-cloud/jeecg-cloud-gateway/src/main/java/org/jeecg/handler/swagger/SwaggerResourceController.java
+++ b/jeecg-server-cloud/jeecg-cloud-gateway/src/main/java/org/jeecg/handler/swagger/SwaggerResourceController.java
@@ -1,41 +1,41 @@
-package org.jeecg.handler.swagger;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import springfox.documentation.swagger.web.*;
-
-import java.util.List;
-
-/**
- * swagger聚合接口,三个接口都是 doc.html需要访问的接口
- * @author zyf
- * @date: 2022/4/21 10:55
- */
-@RestController
-@RequestMapping("/swagger-resources")
-public class SwaggerResourceController {
- private MySwaggerResourceProvider swaggerResourceProvider;
-
- @Autowired
- public SwaggerResourceController(MySwaggerResourceProvider swaggerResourceProvider) {
- this.swaggerResourceProvider = swaggerResourceProvider;
- }
-
- @RequestMapping(value = "/configuration/security")
- public ResponseEntity securityConfiguration() {
- return new ResponseEntity<>(SecurityConfigurationBuilder.builder().build(), HttpStatus.OK);
- }
-
- @RequestMapping(value = "/configuration/ui")
- public ResponseEntity uiConfiguration() {
- return new ResponseEntity<>(UiConfigurationBuilder.builder().build(), HttpStatus.OK);
- }
-
- @RequestMapping
- public ResponseEntity> swaggerResources() {
- return new ResponseEntity<>(swaggerResourceProvider.get(), HttpStatus.OK);
- }
-}
\ No newline at end of file
+//package org.jeecg.handler.swagger;
+//
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.http.HttpStatus;
+//import org.springframework.http.ResponseEntity;
+//import org.springframework.web.bind.annotation.RequestMapping;
+//import org.springframework.web.bind.annotation.RestController;
+//import springfox.documentation.swagger.web.*;
+//
+//import java.util.List;
+//
+///**
+// * swagger聚合接口,三个接口都是 doc.html需要访问的接口
+// * @author zyf
+// * @date: 2022/4/21 10:55
+// */
+//@RestController
+//@RequestMapping("/swagger-resources")
+//public class SwaggerResourceController {
+// private MySwaggerResourceProvider swaggerResourceProvider;
+//
+// @Autowired
+// public SwaggerResourceController(MySwaggerResourceProvider swaggerResourceProvider) {
+// this.swaggerResourceProvider = swaggerResourceProvider;
+// }
+//
+// @RequestMapping(value = "/configuration/security")
+// public ResponseEntity securityConfiguration() {
+// return new ResponseEntity<>(SecurityConfigurationBuilder.builder().build(), HttpStatus.OK);
+// }
+//
+// @RequestMapping(value = "/configuration/ui")
+// public ResponseEntity uiConfiguration() {
+// return new ResponseEntity<>(UiConfigurationBuilder.builder().build(), HttpStatus.OK);
+// }
+//
+// @RequestMapping
+// public ResponseEntity> swaggerResources() {
+// return new ResponseEntity<>(swaggerResourceProvider.get(), HttpStatus.OK);
+// }
+//}
\ No newline at end of file
diff --git a/jeecg-server-cloud/jeecg-cloud-gateway/src/main/java/org/jeecg/loader/DynamicRouteLoader.java b/jeecg-server-cloud/jeecg-cloud-gateway/src/main/java/org/jeecg/loader/DynamicRouteLoader.java
index cafdc3b72..dfa037abd 100644
--- a/jeecg-server-cloud/jeecg-cloud-gateway/src/main/java/org/jeecg/loader/DynamicRouteLoader.java
+++ b/jeecg-server-cloud/jeecg-cloud-gateway/src/main/java/org/jeecg/loader/DynamicRouteLoader.java
@@ -9,10 +9,7 @@ import com.alibaba.nacos.api.NacosFactory;
import com.alibaba.nacos.api.config.ConfigService;
import com.alibaba.nacos.api.config.listener.Listener;
import com.alibaba.nacos.api.exception.NacosException;
-import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.ObjectUtils;
-import org.apache.commons.lang3.StringUtils;
import org.jeecg.common.base.BaseMap;
import org.jeecg.common.constant.CacheConstant;
import org.jeecg.common.util.RedisUtil;
@@ -32,6 +29,8 @@ import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.ApplicationEventPublisherAware;
import org.springframework.context.annotation.DependsOn;
import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+import org.springframework.util.StringUtils;
import reactor.core.publisher.Mono;
import java.net.URI;
@@ -109,7 +108,7 @@ public class DynamicRouteLoader implements ApplicationEventPublisherAware {
* @return
*/
private void loadRoutesByNacos() {
- List routes = Lists.newArrayList();
+ List routes = Collections.emptyList();
configService = createConfigService();
if (configService == null) {
log.warn("initConfigService fail");
@@ -118,7 +117,7 @@ public class DynamicRouteLoader implements ApplicationEventPublisherAware {
log.info("jeecg.route.config.data-id = {}", gatewayRoutersConfig.getDataId());
log.info("nacos.config.group = {}", gatewayRoutersConfig.getRouteGroup());
String configInfo = configService.getConfig(gatewayRoutersConfig.getDataId(), gatewayRoutersConfig.getRouteGroup(), DEFAULT_TIMEOUT);
- if (StringUtils.isNotBlank(configInfo)) {
+ if (StringUtils.hasText(configInfo)) {
log.info("获取网关当前配置:\r\n{}", configInfo);
routes = JSON.parseArray(configInfo, RouteDefinition.class);
}else{
@@ -143,7 +142,7 @@ public class DynamicRouteLoader implements ApplicationEventPublisherAware {
* @return
*/
private void loadRoutesByRedis(BaseMap baseMap) {
- List routes = Lists.newArrayList();
+ List routes = Collections.emptyList();
configService = createConfigService();
if (configService == null) {
log.warn("initConfigService fail");
@@ -170,9 +169,9 @@ public class DynamicRouteLoader implements ApplicationEventPublisherAware {
dynamicRouteService.add(definition);
}
}
- if(ObjectUtils.isNotEmpty(baseMap)){
+ if(!ObjectUtils.isEmpty(baseMap)){
String delRouterId = baseMap.get("delRouterId");
- if (ObjectUtils.isNotEmpty(delRouterId)) {
+ if (!ObjectUtils.isEmpty(delRouterId)) {
dynamicRouteService.delete(delRouterId);
}
}
@@ -360,13 +359,13 @@ public class DynamicRouteLoader implements ApplicationEventPublisherAware {
try {
Properties properties = new Properties();
properties.setProperty("serverAddr", gatewayRoutersConfig.getServerAddr());
- if(StringUtils.isNotBlank(gatewayRoutersConfig.getNamespace())){
+ if(StringUtils.hasText(gatewayRoutersConfig.getNamespace())){
properties.setProperty("namespace", gatewayRoutersConfig.getNamespace());
}
- if(StringUtils.isNotBlank( gatewayRoutersConfig.getUsername())){
+ if(StringUtils.hasText( gatewayRoutersConfig.getUsername())){
properties.setProperty("username", gatewayRoutersConfig.getUsername());
}
- if(StringUtils.isNotBlank(gatewayRoutersConfig.getPassword())){
+ if(StringUtils.hasText(gatewayRoutersConfig.getPassword())){
properties.setProperty("password", gatewayRoutersConfig.getPassword());
}
return configService = NacosFactory.createConfigService(properties);
diff --git a/jeecg-server-cloud/jeecg-cloud-gateway/src/main/resources/application.yml b/jeecg-server-cloud/jeecg-cloud-gateway/src/main/resources/application.yml
index 6a1c49227..2c1c006eb 100644
--- a/jeecg-server-cloud/jeecg-cloud-gateway/src/main/resources/application.yml
+++ b/jeecg-server-cloud/jeecg-cloud-gateway/src/main/resources/application.yml
@@ -1,6 +1,14 @@
server:
port: 9999
+knife4j:
+ gateway:
+ enabled: true
+ discover:
+ excluded-services: ${spring.application.name}
+ enabled: true
+ strategy: discover
+
spring:
application:
name: jeecg-gateway
@@ -8,21 +16,19 @@ spring:
allow-circular-references: true
config:
import:
- - optional:nacos:${spring.application.name}-@profile.name@.yaml
+ - optional:nacos:jeecg-gateway-dev.yaml
cloud:
nacos:
config:
- server-addr: @config.server-addr@
- group: @config.group@
- namespace: @config.namespace@
- username: @config.username@
- password: @config.password@
+ server-addr: localhost:8848
+ namespace: public
+ # username: @config.username@
+ # password: @config.password@
discovery:
server-addr: ${spring.cloud.nacos.config.server-addr}
- group: @config.group@
- namespace: @config.namespace@
- username: @config.username@
- password: @config.password@
+ namespace: public
+ # username: @config.username@
+ # password: @config.password@
gateway:
discovery:
locator:
@@ -50,7 +56,7 @@ spring:
flow: # 指定数据源名称
# 指定nacos数据源
nacos:
- server-addr: @config.server-addr@
+ server-addr: ${spring.cloud.nacos.config.server-addr}
# 指定配置文件
dataId: ${spring.application.name}-flow-rules
# 指定分组
@@ -62,7 +68,7 @@ spring:
#降级规则
degrade:
nacos:
- server-addr: @config.server-addr@
+ server-addr: ${spring.cloud.nacos.config.server-addr}
dataId: ${spring.application.name}-degrade-rules
groupId: SENTINEL_GROUP
rule-type: degrade
@@ -70,7 +76,7 @@ spring:
#系统规则
system:
nacos:
- server-addr: @config.server-addr@
+ server-addr: ${spring.cloud.nacos.config.server-addr}
dataId: ${spring.application.name}-system-rules
groupId: SENTINEL_GROUP
rule-type: system
@@ -78,7 +84,7 @@ spring:
#授权规则
authority:
nacos:
- server-addr: @config.server-addr@
+ server-addr: ${spring.cloud.nacos.config.server-addr}
dataId: ${spring.application.name}-authority-rules
groupId: SENTINEL_GROUP
rule-type: authority
@@ -86,7 +92,7 @@ spring:
#热点参数
param-flow:
nacos:
- server-addr: @config.server-addr@
+ server-addr: ${spring.cloud.nacos.config.server-addr}
dataId: ${spring.application.name}-param-rules
groupId: SENTINEL_GROUP
rule-type: param-flow
@@ -94,7 +100,7 @@ spring:
#网关流控规则
gw-flow:
nacos:
- server-addr: @config.server-addr@
+ server-addr: ${spring.cloud.nacos.config.server-addr}
dataId: ${spring.application.name}-flow-rules
groupId: SENTINEL_GROUP
rule-type: gw-flow
@@ -102,7 +108,7 @@ spring:
#API流控规则
gw-api-group:
nacos:
- server-addr: @config.server-addr@
+ server-addr: ${spring.cloud.nacos.config.server-addr}
dataId: ${spring.application.name}-api-rules
groupId: SENTINEL_GROUP
rule-type: gw-api-group
diff --git a/jeecg-server-cloud/jeecg-cloud-nacos/docs/config/jeecg-dev.yaml b/jeecg-server-cloud/jeecg-cloud-nacos/docs/config/jeecg-dev.yaml
index 99a0f12f3..d9296fd72 100644
--- a/jeecg-server-cloud/jeecg-cloud-nacos/docs/config/jeecg-dev.yaml
+++ b/jeecg-server-cloud/jeecg-cloud-nacos/docs/config/jeecg-dev.yaml
@@ -30,11 +30,12 @@ spring:
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
- redis:
- database: 0
- host: jeecg-boot-redis
- password:
- port: 6379
+ data:
+ redis:
+ database: 0
+ host: jeecg-boot-redis
+ password:
+ port: 6379
rabbitmq:
host: jeecg-boot-rabbitmq
username: guest
diff --git a/jeecg-server-cloud/jeecg-cloud-nacos/docs/config/jeecg-gateway-dev.yaml b/jeecg-server-cloud/jeecg-cloud-nacos/docs/config/jeecg-gateway-dev.yaml
index 0ac5bed70..8caf4a0c8 100644
--- a/jeecg-server-cloud/jeecg-cloud-nacos/docs/config/jeecg-gateway-dev.yaml
+++ b/jeecg-server-cloud/jeecg-cloud-nacos/docs/config/jeecg-gateway-dev.yaml
@@ -6,8 +6,9 @@ jeecg:
group: DEFAULT_GROUP
data-id: jeecg-gateway-router
spring:
- redis:
- database: 0
- host: jeecg-boot-redis
- port: 6379
- password:
\ No newline at end of file
+ data:
+ redis:
+ database: 0
+ host: jeecg-boot-redis
+ port: 6379
+ password:
\ No newline at end of file
diff --git a/jeecg-server-cloud/jeecg-system-cloud-start/src/main/java/org/jeecg/JeecgSystemCloudApplication.java b/jeecg-server-cloud/jeecg-system-cloud-start/src/main/java/org/jeecg/JeecgSystemCloudApplication.java
index 4e37d4d8a..b020c19ed 100644
--- a/jeecg-server-cloud/jeecg-system-cloud-start/src/main/java/org/jeecg/JeecgSystemCloudApplication.java
+++ b/jeecg-server-cloud/jeecg-system-cloud-start/src/main/java/org/jeecg/JeecgSystemCloudApplication.java
@@ -1,5 +1,6 @@
package org.jeecg;
+import com.xkcoding.justauth.autoconfigure.JustAuthAutoConfiguration;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.base.BaseMap;
import org.jeecg.common.constant.GlobalConstants;
@@ -7,6 +8,7 @@ import org.jeecg.common.util.oConvertUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@@ -29,6 +31,7 @@ import java.net.UnknownHostException;
@SpringBootApplication
@EnableFeignClients(basePackages = {"org.jeecg"})
@EnableScheduling
+@ImportAutoConfiguration(JustAuthAutoConfiguration.class) // spring boot 3.x justauth 兼容性处理
public class JeecgSystemCloudApplication extends SpringBootServletInitializer implements CommandLineRunner {
@Autowired
diff --git a/jeecg-server-cloud/jeecg-visual/jeecg-cloud-monitor/pom.xml b/jeecg-server-cloud/jeecg-visual/jeecg-cloud-monitor/pom.xml
index 3d939c0d9..19c95059e 100644
--- a/jeecg-server-cloud/jeecg-visual/jeecg-cloud-monitor/pom.xml
+++ b/jeecg-server-cloud/jeecg-visual/jeecg-cloud-monitor/pom.xml
@@ -19,13 +19,19 @@
de.codecentric
spring-boot-admin-starter-server
- 2.3.1
+ 3.0.4
com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery
+
+ org.springframework.boot
+ spring-boot-properties-migrator
+ runtime
+
+
org.springframework.boot
diff --git a/jeecg-server-cloud/jeecg-visual/jeecg-cloud-monitor/src/main/java/org/jeecg/monitor/config/SecuritySecureConfig.java b/jeecg-server-cloud/jeecg-visual/jeecg-cloud-monitor/src/main/java/org/jeecg/monitor/config/SecuritySecureConfig.java
index fc48e05fa..cd49b69b7 100644
--- a/jeecg-server-cloud/jeecg-visual/jeecg-cloud-monitor/src/main/java/org/jeecg/monitor/config/SecuritySecureConfig.java
+++ b/jeecg-server-cloud/jeecg-visual/jeecg-cloud-monitor/src/main/java/org/jeecg/monitor/config/SecuritySecureConfig.java
@@ -2,8 +2,9 @@ package org.jeecg.monitor.config;
import de.codecentric.boot.admin.server.config.AdminServerProperties;
import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.Customizer;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
+import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;
import org.springframework.security.web.csrf.CookieCsrfTokenRepository;
@@ -11,7 +12,7 @@ import org.springframework.security.web.csrf.CookieCsrfTokenRepository;
* @author scott
*/
@Configuration
-public class SecuritySecureConfig extends WebSecurityConfigurerAdapter {
+public class SecuritySecureConfig {
private final String adminContextPath;
@@ -20,32 +21,40 @@ public class SecuritySecureConfig extends WebSecurityConfigurerAdapter {
}
- @Override
- protected void configure(HttpSecurity http) throws Exception {
+ public SecurityFilterChain configure(HttpSecurity http) throws Exception {
// 登录成功处理类
SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
successHandler.setTargetUrlParameter("redirectTo");
successHandler.setDefaultTargetUrl(adminContextPath + "/");
- http.authorizeRequests()
- //静态文件允许访问
- .antMatchers(adminContextPath + "/assets/**").permitAll()
- //登录页面允许访问
- .antMatchers(adminContextPath + "/login", "/css/**", "/js/**", "/image/*").permitAll()
- //其他所有请求需要登录
- .anyRequest().authenticated()
- .and()
- //登录页面配置,用于替换security默认页面
- .formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and()
- //登出页面配置,用于替换security默认页面
- .logout().logoutUrl(adminContextPath + "/logout").and()
- .httpBasic().and()
- .csrf()
- .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
- .ignoringAntMatchers(
- "/instances",
- "/actuator/**"
- );
+ http.authorizeRequests(authorize -> {
+ try {
+ authorize
+
+ //静态文件允许访问
+ .requestMatchers(adminContextPath + "/assets/**").permitAll()
+ //登录页面允许访问
+ .requestMatchers(adminContextPath + "/login", "/css/**", "/js/**", "/image/*").permitAll()
+ //其他所有请求需要登录
+ .anyRequest().authenticated()
+ .and()
+ //登录页面配置,用于替换security默认页面
+ .formLogin(formLogin -> formLogin.loginPage(adminContextPath + "/login").successHandler(successHandler))
+ //登出页面配置,用于替换security默认页面
+ .logout(logout -> logout.logoutUrl(adminContextPath + "/logout"))
+ .httpBasic(Customizer.withDefaults())
+ .csrf(csrf -> csrf.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
+ .ignoringRequestMatchers(
+ "/instances",
+ "/actuator/**")
+ );
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ );
+
+ return http.build();
}
diff --git a/jeecg-server-cloud/jeecg-visual/jeecg-cloud-sentinel/pom.xml b/jeecg-server-cloud/jeecg-visual/jeecg-cloud-sentinel/pom.xml
index aee913620..73d6aa817 100644
--- a/jeecg-server-cloud/jeecg-visual/jeecg-cloud-sentinel/pom.xml
+++ b/jeecg-server-cloud/jeecg-visual/jeecg-cloud-sentinel/pom.xml
@@ -3,15 +3,20 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
- jeecg-visual
- org.jeecgframework.boot
- 3.6.1
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.7.10
+
jeecg-cloud-sentinel
jeecg-cloud-sentinel
sentinel启动模块
+
+ org.projectlombok
+ lombok
+
org.jeecgframework.cloud
sentinel-dashboard
diff --git a/jeecg-server-cloud/jeecg-visual/jeecg-cloud-sentinel/src/main/resources/application.yml b/jeecg-server-cloud/jeecg-visual/jeecg-cloud-sentinel/src/main/resources/application.yml
index 017cd904c..05ffee650 100644
--- a/jeecg-server-cloud/jeecg-visual/jeecg-cloud-sentinel/src/main/resources/application.yml
+++ b/jeecg-server-cloud/jeecg-visual/jeecg-cloud-sentinel/src/main/resources/application.yml
@@ -12,7 +12,7 @@ spring:
mvc:
#Spring Boot 2.6+\u540E\u6620\u5C04\u5339\u914D\u7684\u9ED8\u8BA4\u7B56\u7565\u5DF2\u4ECEAntPathMatcher\u66F4\u6539\u4E3APathPatternParser,\u9700\u8981\u624B\u52A8\u6307\u5B9A\u4E3Aant-path-matcher
pathmatch:
- matching-strategy: ant-path-matcher
+ matching-strategy: ant_path_matcher
#auth settings
auth:
filter:
@@ -29,7 +29,7 @@ logging:
name: ${user.home}/logs/csp/sentinel-dashboard.log
nacos:
server:
- ip: @config.server-addr@
+ ip: localhost:8848
sentinel:
dashboard:
version: 1.8.2
diff --git a/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-more/src/main/java/org/jeecg/modules/test/feign/controller/JeecgTestFeignController.java b/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-more/src/main/java/org/jeecg/modules/test/feign/controller/JeecgTestFeignController.java
index cc4d6752c..d0347d368 100644
--- a/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-more/src/main/java/org/jeecg/modules/test/feign/controller/JeecgTestFeignController.java
+++ b/jeecg-server-cloud/jeecg-visual/jeecg-cloud-test/jeecg-cloud-test-more/src/main/java/org/jeecg/modules/test/feign/controller/JeecgTestFeignController.java
@@ -1,6 +1,8 @@
package org.jeecg.modules.test.feign.controller;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.jeecg.common.api.vo.Result;
@@ -8,8 +10,6 @@ import org.jeecg.modules.test.feign.client.JeecgTestClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.alibaba.csp.sentinel.annotation.SentinelResource;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
/**
* 微服务单元测试
@@ -19,7 +19,7 @@ import io.swagger.annotations.ApiOperation;
@Slf4j
@RestController
@RequestMapping("/sys/test")
-@Api(tags = "【微服务】单元测试")
+@Tag(name = "【微服务】单元测试")
public class JeecgTestFeignController {
@Autowired
@@ -32,7 +32,7 @@ public class JeecgTestFeignController {
* @return
*/
@GetMapping("/getMessage")
- @ApiOperation(value = "测试feign调用demo服务1", notes = "测试feign @SentinelResource熔断写法 | 测试熔断关闭jeecg-demo服务")
+ @Operation(summary = "测试feign @SentinelResource熔断写法 | 测试熔断关闭jeecg-demo服务")
@SentinelResource(value = "test_more_getMessage", fallback = "getDefaultUser")
public Result getMessage(@RequestParam(value = "name", required = false) String name) {
log.info("---------Feign fallbackFactory优先级高于@SentinelResource-----------------");
@@ -47,7 +47,7 @@ public class JeecgTestFeignController {
* @return
*/
@GetMapping("/getMessage2")
- @ApiOperation(value = "测试feign调用demo服务2", notes = "测试feign fallbackFactory熔断写法 | 测试熔断关闭jeecg-demo服务")
+ @Operation(summary = "测试feign fallbackFactory熔断写法 | 测试熔断关闭jeecg-demo服务")
public Result getMessage2(@RequestParam(value = "name", required = false) String name) {
log.info("---------测试 Feign fallbackFactory-----------------");
String resultMsg = jeecgTestClient.getMessage(" I am jeecg-system 服务节点,呼叫 jeecg-demo!");
@@ -56,7 +56,7 @@ public class JeecgTestFeignController {
@GetMapping("/fallback")
- @ApiOperation(value = "测试熔断", notes = "测试熔断")
+ @Operation(summary = "测试熔断")
@SentinelResource(value = "test_more_fallback", fallback = "getDefaultUser")
public Result