Browse Source

代码优化

Woody 4 tháng trước cách đây
mục cha
commit
e31bcff44d
27 tập tin đã thay đổi với 112 bổ sung112 xóa
  1. 0 9
      framework-base/src/main/java/com/chelvc/framework/base/config/ApplicationConfigurer.java
  2. 17 1
      framework-base/src/main/java/com/chelvc/framework/base/interceptor/GlobalExceptionInterceptor.java
  3. 16 36
      framework-base/src/main/java/com/chelvc/framework/base/interceptor/RequestCachingInterceptor.java
  4. 1 2
      framework-base/src/main/java/com/chelvc/framework/base/interceptor/VersionControlInterceptor.java
  5. 1 3
      framework-base/src/main/java/com/chelvc/framework/base/logic/ExpressionJsonDeserializer.java
  6. 1 3
      framework-base/src/main/java/com/chelvc/framework/base/logic/VariableJsonDeserializer.java
  7. 5 5
      framework-base/src/main/java/com/chelvc/framework/base/util/HttpUtils.java
  8. 20 0
      framework-common/src/main/java/com/chelvc/framework/common/util/ObjectUtils.java
  9. 4 4
      framework-database/src/main/java/com/chelvc/framework/database/handler/JsonTypeHandler.java
  10. 0 2
      framework-kafka/src/main/java/com/chelvc/framework/kafka/config/KafkaConfigurer.java
  11. 5 0
      framework-kafka/src/main/java/com/chelvc/framework/kafka/fallback/KafkaFallbackSender.java
  12. 8 4
      framework-kafka/src/main/java/com/chelvc/framework/kafka/fallback/KafkaMemorySender.java
  13. 5 4
      framework-kafka/src/main/java/com/chelvc/framework/kafka/producer/KafkaMessageSender.java
  14. 1 1
      framework-kafka/src/main/java/com/chelvc/framework/kafka/producer/TransactionMessageProcessor.java
  15. 1 1
      framework-nacos/src/main/java/com/chelvc/framework/nacos/config/NacosConfigurer.java
  16. 3 2
      framework-redis/src/main/java/com/chelvc/framework/redis/queue/DefaultRedisMQListenerContainer.java
  17. 1 6
      framework-redis/src/main/java/com/chelvc/framework/redis/queue/RedisMQListenerContainer.java
  18. 3 2
      framework-rocketmq/src/main/java/com/chelvc/framework/rocketmq/consumer/MultipleRocketMQListenerContainer.java
  19. 1 6
      framework-rocketmq/src/main/java/com/chelvc/framework/rocketmq/consumer/RocketMQListenerContainer.java
  20. 3 2
      framework-rocketmq/src/main/java/com/chelvc/framework/rocketmq/consumer/SingleRocketMQListenerContainer.java
  21. 2 3
      framework-rocketmq/src/main/java/com/chelvc/framework/rocketmq/fallback/FallbackTransaction.java
  22. 2 2
      framework-rocketmq/src/main/java/com/chelvc/framework/rocketmq/fallback/RocketMQFallbackProducer.java
  23. 1 1
      framework-rocketmq/src/main/java/com/chelvc/framework/rocketmq/producer/RocketMQProducerFactory.java
  24. 1 2
      framework-security/src/main/java/com/chelvc/framework/security/interceptor/SecurityFirewallInterceptor.java
  25. 6 7
      framework-security/src/main/java/com/chelvc/framework/security/interceptor/SecurityValidateInterceptor.java
  26. 2 2
      framework-upload/src/main/java/com/chelvc/framework/upload/support/AliyunUploadHandler.java
  27. 2 2
      framework-upload/src/main/java/com/chelvc/framework/upload/support/TencentUploadHandler.java

+ 0 - 9
framework-base/src/main/java/com/chelvc/framework/base/config/ApplicationConfigurer.java

@@ -5,7 +5,6 @@ import javax.servlet.Filter;
 
 import com.chelvc.framework.base.context.DefaultSessionFactory;
 import com.chelvc.framework.base.context.SessionFactory;
-import com.chelvc.framework.base.interceptor.RequestInvokeInterceptor;
 import com.chelvc.framework.base.interceptor.ResponseWrapInterceptor;
 import com.chelvc.framework.common.util.JacksonUtils;
 import com.chelvc.framework.common.util.ObjectUtils;
@@ -47,14 +46,6 @@ public class ApplicationConfigurer {
         return new DefaultSessionFactory();
     }
 
-    @Bean
-    public FilterRegistrationBean<RequestInvokeInterceptor> requestInvokeInterceptor() {
-        FilterRegistrationBean<RequestInvokeInterceptor> registration = new FilterRegistrationBean<>();
-        registration.setFilter(new RequestInvokeInterceptor());
-        registration.setOrder(Ordered.HIGHEST_PRECEDENCE);
-        return registration;
-    }
-
     @Bean
     @ConditionalOnMissingBean(ResponseWrapInterceptor.class)
     public ResponseWrapInterceptor responseWrapInterceptor(RequestMappingHandlerAdapter adapter) {

+ 17 - 1
framework-base/src/main/java/com/chelvc/framework/base/interceptor/GlobalExceptionInterceptor.java

@@ -6,6 +6,10 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
 import java.util.stream.Collectors;
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.ConstraintViolation;
@@ -28,6 +32,8 @@ import org.springframework.beans.TypeMismatchException;
 import org.springframework.boot.autoconfigure.web.servlet.error.AbstractErrorController;
 import org.springframework.boot.web.error.ErrorAttributeOptions;
 import org.springframework.boot.web.servlet.error.DefaultErrorAttributes;
+import org.springframework.core.Ordered;
+import org.springframework.core.annotation.Order;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.converter.HttpMessageConversionException;
 import org.springframework.http.converter.HttpMessageNotReadableException;
@@ -59,7 +65,8 @@ import org.springframework.web.multipart.support.MissingServletRequestPartExcept
 @Slf4j
 @Controller
 @RestControllerAdvice
-public class GlobalExceptionInterceptor extends AbstractErrorController {
+@Order(Ordered.HIGHEST_PRECEDENCE)
+public class GlobalExceptionInterceptor extends AbstractErrorController implements Filter {
     /**
      * 客户端中断异常
      */
@@ -76,6 +83,15 @@ public class GlobalExceptionInterceptor extends AbstractErrorController {
         return null;
     }
 
+    @Override
+    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
+        try {
+            chain.doFilter(request, response);
+        } catch (Exception e) {
+            LoggingContextHolder.error(log, request, e);
+        }
+    }
+
     /**
      * 参数绑定结果格式化
      *

+ 16 - 36
framework-base/src/main/java/com/chelvc/framework/base/interceptor/RequestInvokeInterceptor.java → framework-base/src/main/java/com/chelvc/framework/base/interceptor/RequestCachingInterceptor.java

@@ -7,7 +7,6 @@ import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.util.Collections;
 import java.util.Enumeration;
-import java.util.Iterator;
 import java.util.Map;
 import javax.servlet.FilterChain;
 import javax.servlet.ReadListener;
@@ -17,27 +16,24 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletRequestWrapper;
 import javax.servlet.http.HttpServletResponse;
 
-import com.chelvc.framework.base.context.ApplicationContextHolder;
-import com.chelvc.framework.base.context.LoggingContextHolder;
-import com.chelvc.framework.base.context.Result;
-import com.chelvc.framework.base.context.SessionContextHolder;
 import com.chelvc.framework.base.util.HttpUtils;
 import com.chelvc.framework.common.util.CodecUtils;
 import com.chelvc.framework.common.util.FileUtils;
 import com.chelvc.framework.common.util.ObjectUtils;
 import com.chelvc.framework.common.util.StringUtils;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.http.HttpStatus;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
 import org.springframework.web.filter.OncePerRequestFilter;
 
 /**
- * 请求调用拦截器
+ * 请求缓存拦截器
  *
  * @author Woody
  * @date 2024/4/3
  */
-@Slf4j
-public class RequestInvokeInterceptor extends OncePerRequestFilter {
+@Order
+@Component
+public class RequestCachingInterceptor extends OncePerRequestFilter {
     /**
      * 缓存数据流对象
      */
@@ -205,18 +201,10 @@ public class RequestInvokeInterceptor extends OncePerRequestFilter {
 
         @Override
         public Enumeration<String> getParameterNames() {
-            Iterator<String> iterator = this.parameters.keySet().iterator();
-            return new Enumeration<String>() {
-                @Override
-                public boolean hasMoreElements() {
-                    return iterator.hasNext();
-                }
-
-                @Override
-                public String nextElement() {
-                    return iterator.next();
-                }
-            };
+            if (ObjectUtils.isEmpty(this.parameters)) {
+                return Collections.emptyEnumeration();
+            }
+            return Collections.enumeration(this.parameters.keySet());
         }
 
         @Override
@@ -225,12 +213,12 @@ public class RequestInvokeInterceptor extends OncePerRequestFilter {
         }
 
         @Override
-        public BufferedReader getReader() throws IOException {
+        public BufferedReader getReader() {
             return new BufferedReader(new InputStreamReader(this.getInputStream()));
         }
 
         @Override
-        public ServletInputStream getInputStream() throws IOException {
+        public ServletInputStream getInputStream() {
             return new CachingInputStream(this.bytes);
         }
     }
@@ -238,19 +226,11 @@ public class RequestInvokeInterceptor extends OncePerRequestFilter {
     @Override
     protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
             throws ServletException, IOException {
-        // 如果不是文件上传请求则对原生请求进行缓存包装处理
-        if (!HttpUtils.isStreamBody(request)) {
-            request = new CachingRequestWrapper(request);
-        }
-
-        // 执行请求处理链
-        try {
+        if (HttpUtils.isStreamBody(request)) {
             chain.doFilter(request, response);
-        } catch (Exception e) {
-            LoggingContextHolder.warn(log, request, e);
-            String message = ApplicationContextHolder.getMessage("Request.Invalid");
-            Result<?> result = Result.of(HttpStatus.BAD_REQUEST.name(), null, message);
-            SessionContextHolder.response(response, result);
+        } else {
+            // 如果不是文件上传请求则对原生请求进行缓存包装处理
+            chain.doFilter(new CachingRequestWrapper(request), response);
         }
     }
 }

+ 1 - 2
framework-base/src/main/java/com/chelvc/framework/base/interceptor/VersionControlInterceptor.java

@@ -28,8 +28,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 @Component
 public class VersionControlInterceptor implements HandlerInterceptor, WebMvcConfigurer {
     @Override
-    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
-            throws Exception {
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
         if (!(handler instanceof HandlerMethod)) {
             return true;
         }

+ 1 - 3
framework-base/src/main/java/com/chelvc/framework/base/logic/ExpressionJsonDeserializer.java

@@ -3,7 +3,6 @@ package com.chelvc.framework.base.logic;
 import java.io.IOException;
 
 import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.DeserializationContext;
 import com.fasterxml.jackson.databind.JsonDeserializer;
 
@@ -15,8 +14,7 @@ import com.fasterxml.jackson.databind.JsonDeserializer;
  */
 public class ExpressionJsonDeserializer extends JsonDeserializer<Expression> {
     @Override
-    public Expression deserialize(JsonParser parser, DeserializationContext context)
-            throws IOException, JsonProcessingException {
+    public Expression deserialize(JsonParser parser, DeserializationContext context) throws IOException {
         return Expression.parse(parser.getValueAsString());
     }
 }

+ 1 - 3
framework-base/src/main/java/com/chelvc/framework/base/logic/VariableJsonDeserializer.java

@@ -3,7 +3,6 @@ package com.chelvc.framework.base.logic;
 import java.io.IOException;
 
 import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.DeserializationContext;
 import com.fasterxml.jackson.databind.JsonDeserializer;
 
@@ -15,8 +14,7 @@ import com.fasterxml.jackson.databind.JsonDeserializer;
  */
 public class VariableJsonDeserializer extends JsonDeserializer<Variable> {
     @Override
-    public Variable deserialize(JsonParser parser, DeserializationContext context)
-            throws IOException, JsonProcessingException {
+    public Variable deserialize(JsonParser parser, DeserializationContext context) throws IOException {
         return new Variable(parser.getValueAsString());
     }
 }

+ 5 - 5
framework-base/src/main/java/com/chelvc/framework/base/util/HttpUtils.java

@@ -22,7 +22,7 @@ import javax.servlet.ServletRequest;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import com.chelvc.framework.base.interceptor.RequestInvokeInterceptor;
+import com.chelvc.framework.base.interceptor.RequestCachingInterceptor;
 import com.chelvc.framework.common.model.Media;
 import com.chelvc.framework.common.util.FileUtils;
 import com.chelvc.framework.common.util.HostUtils;
@@ -231,15 +231,15 @@ public final class HttpUtils {
      */
     public static String getBody(@NonNull ServletRequest request) {
         // 从请求包装器中直接获取请求体
-        if (request instanceof RequestInvokeInterceptor.CachingRequestWrapper) {
-            return ((RequestInvokeInterceptor.CachingRequestWrapper) request).getBody();
+        if (request instanceof RequestCachingInterceptor.CachingRequestWrapper) {
+            return ((RequestCachingInterceptor.CachingRequestWrapper) request).getBody();
         }
 
         // 从数据流中获取请求体
         byte[] bytes;
         try (InputStream input = request.getInputStream()) {
-            if (input instanceof RequestInvokeInterceptor.CachingInputStream) {
-                bytes = ((RequestInvokeInterceptor.CachingInputStream) input).bytes();
+            if (input instanceof RequestCachingInterceptor.CachingInputStream) {
+                bytes = ((RequestCachingInterceptor.CachingInputStream) input).bytes();
             } else {
                 bytes = FileUtils.getBytes(input);
             }

+ 20 - 0
framework-common/src/main/java/com/chelvc/framework/common/util/ObjectUtils.java

@@ -19,6 +19,7 @@ import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
+import java.util.Enumeration;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -1659,4 +1660,23 @@ public final class ObjectUtils {
         String string = StringUtils.join(mapping, ":", (key, value) -> key + "=" + value, Comparator.naturalOrder());
         return CodecUtils.md5(string);
     }
+
+    /**
+     * 将枚举对象转换成对象列表
+     *
+     * @param enumeration 枚举对象
+     * @param <T>         元素类型
+     * @return 对象列表
+     */
+    public static <T> List<T> list(Enumeration<T> enumeration) {
+        if (enumeration == null) {
+            return Collections.emptyList();
+        }
+
+        List<T> list = Lists.newLinkedList();
+        while (enumeration.hasMoreElements()) {
+            list.add(enumeration.nextElement());
+        }
+        return list.isEmpty() ? Collections.emptyList() : Collections.unmodifiableList(list);
+    }
 }

+ 4 - 4
framework-database/src/main/java/com/chelvc/framework/database/handler/JsonTypeHandler.java

@@ -148,7 +148,7 @@ public interface JsonTypeHandler<T> extends TypeHandler<T> {
 
     @Override
     @SuppressWarnings("unchecked")
-    default void setParameter(PreparedStatement ps, int i, T parameter, JdbcType jdbcType) throws SQLException {
+    default void setParameter(PreparedStatement ps, int i, T parameter, JdbcType jdbcType) {
         // 如果字典、列表、集合、数组类型参数值为null,则初始化为空对象
         if (parameter == null) {
             Class<?> type = ObjectUtils.type2class(this.getType());
@@ -187,7 +187,7 @@ public interface JsonTypeHandler<T> extends TypeHandler<T> {
     }
 
     @Override
-    default T getResult(ResultSet rs, String columnName) throws SQLException {
+    default T getResult(ResultSet rs, String columnName) {
         try {
             return getNullableResult(rs, columnName);
         } catch (Exception e) {
@@ -197,7 +197,7 @@ public interface JsonTypeHandler<T> extends TypeHandler<T> {
     }
 
     @Override
-    default T getResult(ResultSet rs, int columnIndex) throws SQLException {
+    default T getResult(ResultSet rs, int columnIndex) {
         try {
             return getNullableResult(rs, columnIndex);
         } catch (Exception e) {
@@ -207,7 +207,7 @@ public interface JsonTypeHandler<T> extends TypeHandler<T> {
     }
 
     @Override
-    default T getResult(CallableStatement cs, int columnIndex) throws SQLException {
+    default T getResult(CallableStatement cs, int columnIndex) {
         try {
             return getNullableResult(cs, columnIndex);
         } catch (Exception e) {

+ 0 - 2
framework-kafka/src/main/java/com/chelvc/framework/kafka/config/KafkaConfigurer.java

@@ -170,8 +170,6 @@ public class KafkaConfigurer implements KafkaListenerConfigurer {
             public void destroy() {
                 try {
                     this.sender.destroy();
-                } catch (Exception e) {
-                    throw new RuntimeException(e);
                 } finally {
                     super.destroy();
                 }

+ 5 - 0
framework-kafka/src/main/java/com/chelvc/framework/kafka/fallback/KafkaFallbackSender.java

@@ -41,4 +41,9 @@ public abstract class KafkaFallbackSender<K, V> implements KafkaMessageSender<K,
         future.set(new FallbackSendResult<K, V>(record));
         return future;
     }
+
+    @Override
+    public void destroy() {
+        this.delegate.destroy();
+    }
 }

+ 8 - 4
framework-kafka/src/main/java/com/chelvc/framework/kafka/fallback/KafkaMemorySender.java

@@ -78,10 +78,14 @@ public class KafkaMemorySender<K, V> extends KafkaFallbackSender<K, V> {
     }
 
     @Override
-    public void destroy() throws Exception {
-        if (this.consumer != null) {
-            this.consumer.interrupt();
-            ThreadUtils.join(this.consumer);
+    public void destroy() {
+        try {
+            if (this.consumer != null) {
+                this.consumer.interrupt();
+                ThreadUtils.join(this.consumer);
+            }
+        } finally {
+            super.destroy();
         }
     }
 }

+ 5 - 4
framework-kafka/src/main/java/com/chelvc/framework/kafka/producer/KafkaMessageSender.java

@@ -1,7 +1,6 @@
 package com.chelvc.framework.kafka.producer;
 
 import org.apache.kafka.clients.producer.ProducerRecord;
-import org.springframework.beans.factory.DisposableBean;
 import org.springframework.kafka.support.SendResult;
 import org.springframework.util.concurrent.ListenableFuture;
 
@@ -13,7 +12,7 @@ import org.springframework.util.concurrent.ListenableFuture;
  * @author Woody
  * @date 2024/7/18
  */
-public interface KafkaMessageSender<K, V> extends DisposableBean {
+public interface KafkaMessageSender<K, V> {
     /**
      * 发送消息
      *
@@ -22,7 +21,9 @@ public interface KafkaMessageSender<K, V> extends DisposableBean {
      */
     ListenableFuture<SendResult<K, V>> send(ProducerRecord<K, V> record);
 
-    @Override
-    default void destroy() throws Exception {
+    /**
+     * 销毁处理器
+     */
+    default void destroy() {
     }
 }

+ 1 - 1
framework-kafka/src/main/java/com/chelvc/framework/kafka/producer/TransactionMessageProcessor.java

@@ -62,7 +62,7 @@ public class TransactionMessageProcessor implements ApplicationRunner {
     }
 
     @Override
-    public void run(ApplicationArguments args) throws Exception {
+    public void run(ApplicationArguments args) {
         DelayRedisQueue<String> queue = KafkaContextHolder.getTransactionQueue();
         RedisQueues.consume(queue, 100, Duration.ofSeconds(60), messages -> messages.forEach(message -> {
             try {

+ 1 - 1
framework-nacos/src/main/java/com/chelvc/framework/nacos/config/NacosConfigurer.java

@@ -57,7 +57,7 @@ public class NacosConfigurer implements InitializingBean, ApplicationListener<Na
     }
 
     @Override
-    public synchronized void afterPropertiesSet() throws Exception {
+    public synchronized void afterPropertiesSet() {
         // 初始化Nacos当前配置,并根据配置重置日志级别
         ConfigurableEnvironment environment = (ConfigurableEnvironment) this.applicationContext.getEnvironment();
         for (PropertySource<?> source : environment.getPropertySources()) {

+ 3 - 2
framework-redis/src/main/java/com/chelvc/framework/redis/queue/DefaultRedisMQListenerContainer.java

@@ -18,6 +18,7 @@ import com.chelvc.framework.redis.config.RedisProperties;
 import com.chelvc.framework.redis.context.RedisStreamHolder;
 import lombok.NonNull;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.DisposableBean;
 import org.springframework.core.env.Environment;
 import org.springframework.data.redis.connection.stream.Consumer;
 import org.springframework.data.redis.connection.stream.MapRecord;
@@ -34,7 +35,7 @@ import org.springframework.data.redis.stream.StreamMessageListenerContainer;
  * @date 2024/1/30
  */
 @Slf4j
-public class DefaultRedisMQListenerContainer<T> implements RedisMQListenerContainer<T> {
+public class DefaultRedisMQListenerContainer<T> implements RedisMQListenerContainer<T>, DisposableBean {
     private final String name = StringUtils.uuid();
     private int idle;
     private String topic;
@@ -118,7 +119,7 @@ public class DefaultRedisMQListenerContainer<T> implements RedisMQListenerContai
     }
 
     @Override
-    public void destroy() throws Exception {
+    public void destroy() {
         try {
             if (this.heartbeat != null) {
                 this.heartbeat.shutdown();

+ 1 - 6
framework-redis/src/main/java/com/chelvc/framework/redis/queue/RedisMQListenerContainer.java

@@ -4,7 +4,6 @@ import java.lang.reflect.Type;
 import java.util.concurrent.ExecutorService;
 
 import com.chelvc.framework.redis.annotation.RedisMQConsumer;
-import org.springframework.beans.factory.DisposableBean;
 
 /**
  * 消息监听器容器接口
@@ -13,7 +12,7 @@ import org.springframework.beans.factory.DisposableBean;
  * @author Woody
  * @date 2024/1/30
  */
-public interface RedisMQListenerContainer<T> extends DisposableBean {
+public interface RedisMQListenerContainer<T> {
     /**
      * 容器初始化
      *
@@ -35,8 +34,4 @@ public interface RedisMQListenerContainer<T> extends DisposableBean {
      */
     void initialize(Type type, String topic, String group, int batch, RedisMQListener<T> listener,
                     ExecutorService executor);
-
-    @Override
-    default void destroy() throws Exception {
-    }
 }

+ 3 - 2
framework-rocketmq/src/main/java/com/chelvc/framework/rocketmq/consumer/MultipleRocketMQListenerContainer.java

@@ -24,6 +24,7 @@ import org.apache.rocketmq.client.apis.consumer.FilterExpressionType;
 import org.apache.rocketmq.client.apis.consumer.SimpleConsumer;
 import org.apache.rocketmq.client.apis.consumer.SimpleConsumerBuilder;
 import org.apache.rocketmq.client.apis.message.MessageView;
+import org.springframework.beans.factory.DisposableBean;
 import org.springframework.core.env.Environment;
 
 /**
@@ -34,7 +35,7 @@ import org.springframework.core.env.Environment;
  * @date 2024/1/30
  */
 @Slf4j
-public class MultipleRocketMQListenerContainer<T> implements RocketMQListenerContainer<T> {
+public class MultipleRocketMQListenerContainer<T> implements RocketMQListenerContainer<T>, DisposableBean {
     private int batch;
     private Type type;
     private String group;
@@ -161,7 +162,7 @@ public class MultipleRocketMQListenerContainer<T> implements RocketMQListenerCon
     }
 
     @Override
-    public void destroy() throws Exception {
+    public void destroy() {
         this.running = false;
         try {
             if (this.thread != null) {

+ 1 - 6
framework-rocketmq/src/main/java/com/chelvc/framework/rocketmq/consumer/RocketMQListenerContainer.java

@@ -5,7 +5,6 @@ import java.lang.reflect.Type;
 import com.chelvc.framework.rocketmq.annotation.RocketMQConsumer;
 import org.apache.rocketmq.client.apis.ClientConfiguration;
 import org.apache.rocketmq.client.apis.ClientServiceProvider;
-import org.springframework.beans.factory.DisposableBean;
 
 /**
  * 消息监听器容器接口
@@ -14,7 +13,7 @@ import org.springframework.beans.factory.DisposableBean;
  * @author Woody
  * @date 2024/1/30
  */
-public interface RocketMQListenerContainer<T> extends DisposableBean {
+public interface RocketMQListenerContainer<T> {
     /**
      * 容器初始化
      *
@@ -26,8 +25,4 @@ public interface RocketMQListenerContainer<T> extends DisposableBean {
      */
     void initialize(Type type, ClientServiceProvider provider, ClientConfiguration configuration,
                     RocketMQListener<T> listener, RocketMQConsumer annotation);
-
-    @Override
-    default void destroy() throws Exception {
-    }
 }

+ 3 - 2
framework-rocketmq/src/main/java/com/chelvc/framework/rocketmq/consumer/SingleRocketMQListenerContainer.java

@@ -19,6 +19,7 @@ import org.apache.rocketmq.client.apis.consumer.FilterExpressionType;
 import org.apache.rocketmq.client.apis.consumer.PushConsumer;
 import org.apache.rocketmq.client.apis.consumer.PushConsumerBuilder;
 import org.apache.rocketmq.client.apis.message.MessageView;
+import org.springframework.beans.factory.DisposableBean;
 import org.springframework.core.env.Environment;
 
 /**
@@ -29,7 +30,7 @@ import org.springframework.core.env.Environment;
  * @date 2024/1/30
  */
 @Slf4j
-public class SingleRocketMQListenerContainer<T> implements RocketMQListenerContainer<T> {
+public class SingleRocketMQListenerContainer<T> implements RocketMQListenerContainer<T>, DisposableBean {
     private Type type;
     private String group;
     private PushConsumer consumer;
@@ -91,7 +92,7 @@ public class SingleRocketMQListenerContainer<T> implements RocketMQListenerConta
     }
 
     @Override
-    public void destroy() throws Exception {
+    public void destroy() {
         if (this.consumer != null) {
             try {
                 this.consumer.close();

+ 2 - 3
framework-rocketmq/src/main/java/com/chelvc/framework/rocketmq/fallback/FallbackTransaction.java

@@ -5,7 +5,6 @@ import java.util.function.BiConsumer;
 
 import lombok.NonNull;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.rocketmq.client.apis.ClientException;
 import org.apache.rocketmq.client.apis.message.Message;
 import org.apache.rocketmq.client.apis.producer.Transaction;
 
@@ -57,7 +56,7 @@ public class FallbackTransaction implements Transaction {
     }
 
     @Override
-    public void commit() throws ClientException {
+    public void commit() {
         if (!this.degraded) {
             try {
                 this.delegate.commit();
@@ -70,7 +69,7 @@ public class FallbackTransaction implements Transaction {
     }
 
     @Override
-    public void rollback() throws ClientException {
+    public void rollback() {
         if (!this.degraded) {
             try {
                 this.delegate.rollback();

+ 2 - 2
framework-rocketmq/src/main/java/com/chelvc/framework/rocketmq/fallback/RocketMQFallbackProducer.java

@@ -35,7 +35,7 @@ public abstract class RocketMQFallbackProducer implements Producer {
     protected abstract void fallback(Message message, Transaction transaction);
 
     @Override
-    public SendReceipt send(Message message) throws ClientException {
+    public SendReceipt send(Message message) {
         try {
             return this.delegate.send(message);
         } catch (Exception e) {
@@ -75,7 +75,7 @@ public abstract class RocketMQFallbackProducer implements Producer {
     }
 
     @Override
-    public Transaction beginTransaction() throws ClientException {
+    public Transaction beginTransaction() {
         Transaction transaction = null;
         try {
             transaction = this.delegate.beginTransaction();

+ 1 - 1
framework-rocketmq/src/main/java/com/chelvc/framework/rocketmq/producer/RocketMQProducerFactory.java

@@ -42,7 +42,7 @@ public class RocketMQProducerFactory implements FactoryBean<Producer>, Disposabl
     }
 
     @Override
-    public Producer getObject() throws Exception {
+    public Producer getObject() {
         if (this.producer != null) {
             return this.producer;
         }

+ 1 - 2
framework-security/src/main/java/com/chelvc/framework/security/interceptor/SecurityFirewallInterceptor.java

@@ -165,8 +165,7 @@ public class SecurityFirewallInterceptor implements HandlerInterceptor, WebMvcCo
     }
 
     @Override
-    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
-            throws Exception {
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
         if (!(handler instanceof HandlerMethod) || !this.isEnabled()) {
             return true;
         }

+ 6 - 7
framework-security/src/main/java/com/chelvc/framework/security/interceptor/SecurityValidateInterceptor.java

@@ -15,7 +15,7 @@ import com.chelvc.framework.base.context.LoggingContextHolder;
 import com.chelvc.framework.base.context.Result;
 import com.chelvc.framework.base.context.Session;
 import com.chelvc.framework.base.context.SessionContextHolder;
-import com.chelvc.framework.base.interceptor.RequestInvokeInterceptor;
+import com.chelvc.framework.base.interceptor.RequestCachingInterceptor;
 import com.chelvc.framework.base.util.HttpUtils;
 import com.chelvc.framework.base.util.SpringUtils;
 import com.chelvc.framework.common.exception.FrameworkException;
@@ -93,8 +93,8 @@ public class SecurityValidateInterceptor implements HandlerInterceptor, WebMvcCo
     private HttpInputMessage decrypt(HttpInputMessage message) throws IOException {
         byte[] bytes;
         try (InputStream input = message.getBody()) {
-            if (input instanceof RequestInvokeInterceptor.CachingInputStream) {
-                bytes = ((RequestInvokeInterceptor.CachingInputStream) input).bytes(true);
+            if (input instanceof RequestCachingInterceptor.CachingInputStream) {
+                bytes = ((RequestCachingInterceptor.CachingInputStream) input).bytes(true);
             } else {
                 bytes = CodecUtils.decodeBase64(FileUtils.getBytes(input));
             }
@@ -107,15 +107,14 @@ public class SecurityValidateInterceptor implements HandlerInterceptor, WebMvcCo
             }
 
             @Override
-            public InputStream getBody() throws IOException {
+            public InputStream getBody() {
                 return new ByteArrayInputStream(plaintext);
             }
         };
     }
 
     @Override
-    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
-            throws Exception {
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
         if (!(handler instanceof HandlerMethod) || SpringUtils.isPath(request.getRequestURI(), this.ignores)) {
             return true;
         }
@@ -190,7 +189,7 @@ public class SecurityValidateInterceptor implements HandlerInterceptor, WebMvcCo
 
     @Override
     public HttpInputMessage beforeBodyRead(HttpInputMessage message, MethodParameter method, Type type,
-                                           Class<? extends HttpMessageConverter<?>> clazz) throws IOException {
+                                           Class<? extends HttpMessageConverter<?>> clazz) {
         try {
             return this.decrypt(message);
         } catch (Exception e) {

+ 2 - 2
framework-upload/src/main/java/com/chelvc/framework/upload/support/AliyunUploadHandler.java

@@ -88,7 +88,7 @@ public class AliyunUploadHandler implements UploadHandler {
     }
 
     @Override
-    public String upload(@NonNull File file, @NonNull String filename) throws IOException {
+    public String upload(@NonNull File file, @NonNull String filename) {
         ObjectMetadata metadata = new ObjectMetadata();
         metadata.setObjectAcl(CannedAccessControlList.PublicRead);
         this.oss.putObject(this.bucket, filename, file, metadata);
@@ -101,7 +101,7 @@ public class AliyunUploadHandler implements UploadHandler {
     }
 
     @Override
-    public String upload(@NonNull InputStream stream, @NonNull String filename, long length) throws IOException {
+    public String upload(@NonNull InputStream stream, @NonNull String filename, long length) {
         ObjectMetadata metadata = new ObjectMetadata();
         metadata.setContentLength(length);
         metadata.setObjectAcl(CannedAccessControlList.PublicRead);

+ 2 - 2
framework-upload/src/main/java/com/chelvc/framework/upload/support/TencentUploadHandler.java

@@ -85,7 +85,7 @@ public class TencentUploadHandler implements UploadHandler {
     }
 
     @Override
-    public String upload(@NonNull File file, @NonNull String filename) throws IOException {
+    public String upload(@NonNull File file, @NonNull String filename) {
         this.cos.putObject(this.bucket, filename, file);
         return HttpUtils.url(this.domain, filename);
     }
@@ -96,7 +96,7 @@ public class TencentUploadHandler implements UploadHandler {
     }
 
     @Override
-    public String upload(@NonNull InputStream stream, @NonNull String filename, long length) throws IOException {
+    public String upload(@NonNull InputStream stream, @NonNull String filename, long length) {
         ObjectMetadata metadata = new ObjectMetadata();
         metadata.setContentLength(length);
         this.cos.putObject(this.bucket, filename, stream, metadata);