diff --git a/continew-starter-dependencies/pom.xml b/continew-starter-dependencies/pom.xml
index b9be2023..fdb67633 100644
--- a/continew-starter-dependencies/pom.xml
+++ b/continew-starter-dependencies/pom.xml
@@ -6,7 +6,7 @@
org.springframework.boot
spring-boot-dependencies
- 3.2.10
+ 3.2.12
@@ -44,32 +44,32 @@
2.7.5
- 1.1.2
+ 1.2.0
1.39.0
- 1.16.6
+ 1.16.7
3.5.8
- 1.9.7
+ 1.10.3
4.3.1
3.9.1
- 2.7.6
- 3.36.0
- 2.9.9
+ 2.7.7
+ 3.41.0
+ 2.10.1
3.3.3
1.3.0
1.6.2
3.3.4
- 15.4
+ 15.5
2.2.1
- 1.12.771
- 5.0.0-boot3
+ 1.12.780
+ 5.0.4-boot3
2.9.0
4.5.0
1.5.2
2.3
4.12.0
2.14.5
- 3.2.6
- 5.8.32
+ 3.2.12
+ 5.8.34
1.6.0
2.43.0
diff --git a/continew-starter-web/src/main/java/top/continew/starter/web/autoconfigure/response/DefaultBeforeControllerAdviceProcessImpl.java b/continew-starter-web/src/main/java/top/continew/starter/web/autoconfigure/response/DefaultBeforeControllerAdviceProcessImpl.java
index 60c3dd7d..30bbea1a 100644
--- a/continew-starter-web/src/main/java/top/continew/starter/web/autoconfigure/response/DefaultBeforeControllerAdviceProcessImpl.java
+++ b/continew-starter-web/src/main/java/top/continew/starter/web/autoconfigure/response/DefaultBeforeControllerAdviceProcessImpl.java
@@ -18,9 +18,10 @@ package top.continew.starter.web.autoconfigure.response;
import com.feiniaojin.gracefulresponse.advice.lifecycle.exception.BeforeControllerAdviceProcess;
import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import top.continew.starter.web.util.SpringWebUtils;
+import org.springframework.lang.Nullable;
/**
* 默认回调处理器实现
@@ -38,10 +39,9 @@ public class DefaultBeforeControllerAdviceProcessImpl implements BeforeControlle
}
@Override
- public void call(Throwable throwable) {
+ public void call(HttpServletRequest request, HttpServletResponse response, @Nullable Object handler, Exception e) {
if (globalResponseProperties.isPrintExceptionInGlobalAdvice()) {
- HttpServletRequest request = SpringWebUtils.getRequest();
- log.error("[{}] {}", request.getMethod(), request.getRequestURI(), throwable);
+ log.error("[{}] {}", request.getMethod(), request.getRequestURI(), e);
}
}
}
diff --git a/continew-starter-web/src/main/java/top/continew/starter/web/autoconfigure/response/GlobalResponseAutoConfiguration.java b/continew-starter-web/src/main/java/top/continew/starter/web/autoconfigure/response/GlobalResponseAutoConfiguration.java
index 7dded060..186d6410 100644
--- a/continew-starter-web/src/main/java/top/continew/starter/web/autoconfigure/response/GlobalResponseAutoConfiguration.java
+++ b/continew-starter-web/src/main/java/top/continew/starter/web/autoconfigure/response/GlobalResponseAutoConfiguration.java
@@ -20,7 +20,7 @@ import com.feiniaojin.gracefulresponse.ExceptionAliasRegister;
import com.feiniaojin.gracefulresponse.advice.*;
import com.feiniaojin.gracefulresponse.advice.lifecycle.exception.BeforeControllerAdviceProcess;
import com.feiniaojin.gracefulresponse.advice.lifecycle.exception.ControllerAdvicePredicate;
-import com.feiniaojin.gracefulresponse.advice.lifecycle.response.ResponseBodyAdvicePredicate;
+import com.feiniaojin.gracefulresponse.advice.lifecycle.exception.RejectStrategy;
import com.feiniaojin.gracefulresponse.api.ResponseFactory;
import com.feiniaojin.gracefulresponse.api.ResponseStatusFactory;
import com.feiniaojin.gracefulresponse.defaults.DefaultResponseFactory;
@@ -36,8 +36,10 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.PropertySource;
import org.springframework.context.support.ResourceBundleMessageSource;
+import org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver;
import top.continew.starter.core.constant.PropertiesConstants;
import top.continew.starter.core.util.GeneralPropertySourceFactory;
@@ -68,12 +70,7 @@ public class GlobalResponseAutoConfiguration {
@Bean
@ConditionalOnMissingBean
public GrNotVoidResponseBodyAdvice grNotVoidResponseBodyAdvice() {
- GrNotVoidResponseBodyAdvice notVoidResponseBodyAdvice = new GrNotVoidResponseBodyAdvice();
- CopyOnWriteArrayList copyOnWriteArrayList = new CopyOnWriteArrayList<>();
- copyOnWriteArrayList.add(notVoidResponseBodyAdvice);
- notVoidResponseBodyAdvice.setPredicates(copyOnWriteArrayList);
- notVoidResponseBodyAdvice.setResponseBodyAdviceProcessor(notVoidResponseBodyAdvice);
- return notVoidResponseBodyAdvice;
+ return new GrNotVoidResponseBodyAdvice();
}
/**
@@ -82,12 +79,7 @@ public class GlobalResponseAutoConfiguration {
@Bean
@ConditionalOnMissingBean
public GrVoidResponseBodyAdvice grVoidResponseBodyAdvice() {
- GrVoidResponseBodyAdvice voidResponseBodyAdvice = new GrVoidResponseBodyAdvice();
- CopyOnWriteArrayList copyOnWriteArrayList = new CopyOnWriteArrayList<>();
- copyOnWriteArrayList.add(voidResponseBodyAdvice);
- voidResponseBodyAdvice.setPredicates(copyOnWriteArrayList);
- voidResponseBodyAdvice.setResponseBodyAdviceProcessor(voidResponseBodyAdvice);
- return voidResponseBodyAdvice;
+ return new GrVoidResponseBodyAdvice();
}
/**
@@ -103,9 +95,10 @@ public class GlobalResponseAutoConfiguration {
* 框架异常处理器
*/
@Bean
- public FrameworkExceptionAdvice frameworkExceptionAdvice(BeforeControllerAdviceProcess beforeControllerAdviceProcess) {
+ public FrameworkExceptionAdvice frameworkExceptionAdvice(BeforeControllerAdviceProcess beforeControllerAdviceProcess,
+ @Lazy RejectStrategy rejectStrategy) {
FrameworkExceptionAdvice frameworkExceptionAdvice = new FrameworkExceptionAdvice();
- frameworkExceptionAdvice.setRejectStrategy(new DefaultRejectStrategyImpl());
+ frameworkExceptionAdvice.setRejectStrategy(rejectStrategy);
frameworkExceptionAdvice.setControllerAdviceProcessor(frameworkExceptionAdvice);
frameworkExceptionAdvice.setBeforeControllerAdviceProcess(beforeControllerAdviceProcess);
frameworkExceptionAdvice.setControllerAdviceHttpProcessor(frameworkExceptionAdvice);
@@ -116,9 +109,10 @@ public class GlobalResponseAutoConfiguration {
* 数据校验异常处理器
*/
@Bean
- public DataExceptionAdvice dataExceptionAdvice(BeforeControllerAdviceProcess beforeControllerAdviceProcess) {
+ public DataExceptionAdvice dataExceptionAdvice(BeforeControllerAdviceProcess beforeControllerAdviceProcess,
+ @Lazy RejectStrategy rejectStrategy) {
DataExceptionAdvice dataExceptionAdvice = new DataExceptionAdvice();
- dataExceptionAdvice.setRejectStrategy(new DefaultRejectStrategyImpl());
+ dataExceptionAdvice.setRejectStrategy(rejectStrategy);
dataExceptionAdvice.setControllerAdviceProcessor(dataExceptionAdvice);
dataExceptionAdvice.setBeforeControllerAdviceProcess(beforeControllerAdviceProcess);
dataExceptionAdvice.setControllerAdviceHttpProcessor(dataExceptionAdvice);
@@ -129,9 +123,10 @@ public class GlobalResponseAutoConfiguration {
* 默认全局异常处理器
*/
@Bean
- public DefaultGlobalExceptionAdvice defaultGlobalExceptionAdvice(BeforeControllerAdviceProcess beforeControllerAdviceProcess) {
+ public DefaultGlobalExceptionAdvice defaultGlobalExceptionAdvice(BeforeControllerAdviceProcess beforeControllerAdviceProcess,
+ @Lazy RejectStrategy rejectStrategy) {
DefaultGlobalExceptionAdvice advice = new DefaultGlobalExceptionAdvice();
- advice.setRejectStrategy(new DefaultRejectStrategyImpl());
+ advice.setRejectStrategy(rejectStrategy);
CopyOnWriteArrayList copyOnWriteArrayList = new CopyOnWriteArrayList<>();
copyOnWriteArrayList.add(advice);
advice.setPredicates(copyOnWriteArrayList);
@@ -145,27 +140,40 @@ public class GlobalResponseAutoConfiguration {
* 默认参数校验异常处理器
*/
@Bean
- public DefaultValidationExceptionAdvice defaultValidationExceptionAdvice(BeforeControllerAdviceProcess beforeControllerAdviceProcess) {
+ public DefaultValidationExceptionAdvice defaultValidationExceptionAdvice(BeforeControllerAdviceProcess beforeControllerAdviceProcess,
+ @Lazy RejectStrategy rejectStrategy) {
DefaultValidationExceptionAdvice advice = new DefaultValidationExceptionAdvice();
- advice.setRejectStrategy(new DefaultRejectStrategyImpl());
+ advice.setRejectStrategy(rejectStrategy);
advice.setControllerAdviceProcessor(advice);
advice.setBeforeControllerAdviceProcess(beforeControllerAdviceProcess);
+ // 设置默认参数校验异常http处理器
advice.setControllerAdviceHttpProcessor(advice);
return advice;
}
+ /**
+ * 拒绝策略
+ */
+ @Bean
+ public RejectStrategy rejectStrategy() {
+ return new DefaultRejectStrategyImpl();
+ }
+
+ /**
+ * 释放异常处理器
+ */
+ @Bean
+ public ExceptionHandlerExceptionResolver releaseExceptionHandlerExceptionResolver() {
+ return new ReleaseExceptionHandlerExceptionResolver();
+ }
+
/**
* 国际化支持
*/
@Bean
@ConditionalOnProperty(prefix = PropertiesConstants.WEB_RESPONSE, name = "i18n", havingValue = "true")
public GrI18nResponseBodyAdvice grI18nResponseBodyAdvice() {
- GrI18nResponseBodyAdvice i18nResponseBodyAdvice = new GrI18nResponseBodyAdvice();
- CopyOnWriteArrayList copyOnWriteArrayList = new CopyOnWriteArrayList<>();
- copyOnWriteArrayList.add(i18nResponseBodyAdvice);
- i18nResponseBodyAdvice.setPredicates(copyOnWriteArrayList);
- i18nResponseBodyAdvice.setResponseBodyAdviceProcessor(i18nResponseBodyAdvice);
- return i18nResponseBodyAdvice;
+ return new GrI18nResponseBodyAdvice();
}
/**