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(); } /**